home *** CD-ROM | disk | FTP | other *** search
INI File | 1995-10-08 | 651.4 KB | 14,811 lines |
- [Start of file: vga.doc]
-
-
- 0. Preamble: about this document
- == =============================
-
-
- 0.01 Title, subtitle, author, version, copyright
- ==== ===========================================
-
-
- TITLE: VGA Programmers Master Reference Manual
-
-
- SUBTITLE: Concepts and pragmatics of computational modelling,
- visual model representation and manipulation, using
- a Video Graphics Array controller chip.
-
- {This is a somewhat expansive subtitle, suitable for }
- {a somewhat more comprehensive work than the present.}
- {This is justified only when additional work is done.}
-
-
- EDITION: First edition, Summer 1991, Identity: 91.07.52
-
-
- AUTHOR: Andrew Scott
-
-
- COPYRIGHT: (c) 1991 by Andrew Scott, world rights reserved
-
-
-
-
- 0.02 List of contents
- ==== ================
-
-
- 0. Preamble: about this document
-
- 0.01 Title, subtitle, author, version, copyright
- 0.02 List of contents
- 0.03 Notice of copyright
- 0.04 Suggested license fees
- 0.05 Shareware and how it works
- 0.06 Obtaining a print of this document
- 0.07 Your expert input to this document
- 0.08 Contacting the author
- 0.09 Registration and Receipt Form
- 0.s Summary
-
-
- 1. Preface: how this document will help you
-
- 1.01 Goals of this document
- 1.02 Suggested audience orientation
- 1.03 How to use this document
- 1.s Summary
-
-
- 2. Components of a computer system
-
- 2.01 A computer system structure
- 2.02 Hardware of a computer system
- 2.03 Hardware: the input unit
- 2.04 Hardware: the processing unit
- 2.05 Hardware: the memory unit
- 2.06 Hardware: the control unit
- 2.07 Hardware: the output unit
- 2.08 Hardware: the external environment
- 2.09 Hardware: control by program
- 2.s Summary
-
-
- 3. Modelling using a computer system
-
- 3.01 Computer system operation
- 3.02 The original computer
- 3.03 Computation as modelling
- 3.04 The essentials of computation
- 3.05 Problem solving through model building
- 3.06 Types of models
- 3.07 Objects and structural models
- 3.08 Attributes, values and value spaces
- 3.09 Some properties of value spaces
- 3.10 Simple values, collected values
- 3.11 Models with memory
- 3.12 The memory store operation
- 3.13 The memory load operation
- 3.14 Modelling constants, variables
- 3.15 The problem of addresses
- 3.16 Structures expressed by means of values
- 3.17 The program as a model
- 3.18 The simplest operations for computation
- 3.s Summary
-
-
- 4. Visual modelling
-
- 4.01 Complexity control and abstraction
- 4.02 Human interaction with a computer system
- 4.03 Display quality issues
- 4.04 Context representation
- 4.05 Building blocks of a visual modelling scheme
- 4.s Summary
-
-
- 5. Display device characteristics
-
- 5.01 Raster scan display systems
- 5.02 Raster scan image refresh
- 5.03 Signals for image generation
- 5.04 Timing issues
- 5.05 Image generation can be dangerous!
- 5.06 Persistance in human vision
- 5.07 Interlaced display
- 5.08 Screen border display
- 5.09 Cursor generation
- 5.10 Multi-synch monitors
- 5.s Summary
-
-
- 6. VGA controller: Computer interface
-
- 6.01 Memory interface
- 6.02 Input, output, port interface
- 6.03 Complete input, output port accessible register list
- 6.04 Register specifications: Sequencer
- 6.05 Register specifications: CRT Controller
- 6.06 Register specifications: Graphics Controller
- 6.07 Register specifications: Attribute Controller
- 6.08 Register specifications: DAC Support Logic
- 6.09 Register specifications: General Registers
- 6.10 Register specifications: Special Registers
- 6.s Summary
-
-
- 7. VGA controller: Architecture
-
- 7.01 Controller timing generator: { Sequencer }
- 7.02 Display timing generator: { CRT Controller }
- 7.03 Image information processor: { Graphics Controller }
- 7.04 Image presentation processor: { Attribute Controller }
- 7.05 Colour presentation processor: { DAC Support Logic }
- 7.s Summary
-
-
- 8. VGA controller: Text
- {Only available in second edition}
-
- 8.01 Text image generation
- 8.02 Text font representation
- 8.03 Text attribute representation
- 8.04 Text character set extensions
- 8.05 Text mode support for graphics
-
-
- 9. VGA controller: Graphics
- {Only available in second edition}
-
- 9.01 Graphic image generation
- 9.02 Graphic multi-plane memory
- 9.03 Graphic packed pixel memory
- 9.04 Graphic line drawing
- 9.05 Graphic object drawing
-
-
- 10. VGA controller: Hardware Interface
-
- 10.01 Hardware connector layout
- 10.02 Monitor auto-detection operation
- 10.03 Monitor auto-configuration operation
-
-
-
- References.
-
-
- Glossary.
-
-
- Index.
-
-
-
-
- 0.03 Notice of copyright
- ==== ===================
-
-
- This file is copyright (c) 1991 by A.J.B. Scott. Restricted permission to copy
- is given provided that the following conditions are met in full, without any
- qualification:
-
-
- 1. No fee shall be charged for the material content of this file, excepting
- only that a small fee for media and copying time may be charged for.
-
- 2. The file shall be copied entirely, without modification or ammendment,
- the copyright notice shall be present in the original form, and these
- conditions shall appear intact.
-
- 3. The copying of this material shall not be for commercial gain with
- the intent or effect of depriving the copyright owner of legitimate
- income deriving from licenses granted to users for this work.
-
- 4. The material appearing here is assigned by the author to distribution as
- shareware. This means that copyright remains with the author, and that
- this material may be used in entirety for a short period for review. At
- completion of review, the user may decide that the material is useful,
- in which case a registration fee presented by the user to the author will
- secure a license to use, for the registering user. The user may decide
- what to pay for the license to use, depending upon the value to the user
- of the material. Guidelines are given below regarding a suitable fee.
- A suggested period for review is thirty (30) days elapsed time. After
- this time, either the material should be licensed, or if unsuitable for
- the purpose intended by the user, it should be passed in entirety to
- another interested person or else completely destroyed. Erasure from
- the carrier medium is for this purpose equivalent to destruction. Any
- printed version must also be destroyed.
-
- 5. The user is responsible for deciding the suitability or otherwise of this
- material for purposes decided by the user. The user makes use of this
- work at the users own risk. The author explicitly forbids any user from
- using any material contained in this document in connection with any and
- all life critical systems.
-
-
-
-
- 0.04 Suggested license fees
- ==== ======================
-
-
- A suggested scale of license fees is given below, based upon the degree
- of use to which the user puts or expects to put the enclosed material:
-
- 1. If you find that certain portions of the material are sufficiently
- useful that you need to refer to them in order to PROGRESS SOME
- PROJECT that you are involved in, then you really are depending on
- the material, so an appropriate payment would be SIXTEEN (16) POUNDS
- U.K. STERLING. This is the LICENSE FEE applicable when you make ONE
- PRINTED COPY of this document.
-
- 2. For registered users as in (1) above, FURTHER PRINTED COPIES of
- the document may be taken, and registered for use, by payment of
- FOUR (4) POUNDS U.K. STERLING PER PRINTED COPY. There is NO
- discount available for additional printed copies.
-
- 3. If as a user, you find the material sufficiently interesting or
- relevant that you READ ALL THE MATERIAL, then you could consider
- that the material was either entertaining or extremely relevant to
- you and your interests. In this case an appropriate payment would
- be TWELVE (12) U.K. POUNDS STERLING. This assumes that you have
- NOT MADE A PRINTED COPY.
-
- 4. If you find that although you cannot use the material at this time,
- you would EXPECT TO USE it at some time IN the FUTURE, you are of
- the opinion that the material is potentially useful to you, so a
- registration fee of EIGHT (8) U.K. POUNDS STERLING is appropriate.
- This assumes that you have NOT MADE A PRINTED COPY.
-
- 5. If you simply want to maintain the RIGHT TO LEGALLY USE the material
- WHEN IT BECOMES IMPORTANT to you, then IN ORDER TO RETAIN it ON YOUR
- COMPUTER SYSTEM, a payment of FOUR (4) U.K. POUNDS STERLING is the
- suggested license fee. This applies when you wish to KEEP material
- for BACKUP PURPOSES or for "what if" or "just in case" situations.
- This assumes that you have NOT MADE A PRINTED COPY.
-
- 6. For REGISTERED USERS who wish to INCREASE their LEVEL OF REGISTRATION
- at a later date, A DISCOUNT IS AVAILABLE. To take advantage of this,
- include your registration number with your order, and deduct ONE pound
- sterling FOR EACH FOUR pounds DIFFERENCE in your existing and upgraded
- registration levels. This does NOT APPLY TO additional PRINTED COPIES
- of this work. See (2) above.
-
- 7. IF you reviewed the material but do not find it interesting, or if
- YOU CANNOT MAKE any USE OF IT, THEN you are requested to pass all the
- material to someone who may be interested, or ENTIRELY DESTROY your
- COPY of it, INCLUDING any PRINTED VERSION you may have made for review
- purposes. THIS PROVIDES you with a LEGITIMATE way of stating that
- the material DOES NOT MEET your NEEDS. If you need to KEEP A COPY,
- then you SHOULD consider REGISTERING as in (5) above.
-
-
-
-
- 0.05 Shareware and how it works
- ==== ==========================
-
-
- It is important to emphasise that this material did not just suddenly appear
- as if by magic. It had to be created, but only after the expenditure of much
- thought and effort. As with any human endevour, people who create works or
- perform work for other people do expect and do need to be rewarded for their
- efforts.
-
- The purpose of the shareware concept is to provide a vehicle whereby talented
- people can produce high quality work, which may subsequently be distributed
- by many different channels, but always at low cost. The ultimate goal is that
- clients who use shareware, can obtain useful relevant products at a very low
- price, without any compromise on quality.
-
- For a shareware author, the business of marketing and distribution is taken
- care of, leaving the author with the time and energy to concentrate on product
- development, helping to ensure production of a quality product.
-
- So, if you find any shareware product useful, make sure that you take the time
- to give your vote of confidence in the product and its author, by registering
- the product enclosing the appropriate fee to the author.
-
- If you do not do this, the author will not be in a position to produce further
- products that you will find useful, and, ultimately, you will be saying that
- you do not respect the product you are using, the author who produced it, and
- that you would rather buy an expensive product in a shiny wrapper than support
- the shareware concept.
-
- The simple fact is, you either register your use of a product, or see the means
- that brought you that product (shareware) wither and die. The choice is yours.
-
- On the other hand, you should definately not register a product which is no use
- to you, and will never be any use to you. Many authors like to hear why their
- product does not provide what you actually need, and would like your comments.
-
- Why not support them and provide your views? You can only benefit long term.
- Some people have found that authors of shareware products can be very flexible
- when new updates are issued. Some users have suddenly found that their views
- have helped give them exactly what they need in a new product.
-
- So, it's over to you. Enjoy using this material or let me know how you would
- like to see it improved or reoriented. Thank you and good luck.
-
-
-
-
- 0.06 Obtaining a print of this document
- ==== ==================================
-
-
- To make best use of this document, for evaluation purposes, or, after you have
- registered and paid the appropriate license fee (see above for details), for
- reference use, it is beneficial to obtain a printed version of this document.
-
- For those of you who wish to print this document, it is necessary to make note
- that the ascii text comprising this document is completely devoid of control
- characters, excepting only cr {carriage return} and lf {line feed}. No other
- non-printing characters are used. This has been done on purpose, so that any
- printing device which supports ascii character sets may successfully produce
- a print.
-
- The absence of ff {form feed} control characters means that there will not be
- a division of this document into complete page sections. This should not be a
- problem, since the material is indexed by the contents list, and there are
- differences of page lengths supported by different printing devices, which in
- practise would change the page numbering.
-
- For these reasons, the concept of page has been completely ignored throughout
- this document.
-
- The printable width of lines is constrained to be 80 characters or less. In
- this way, virtually any industry standard output device may be used to create
- a readable image of this text, whether on video display unit, or print device.
- Note however, that the actual size of a line may be just over 80 characters
- when the carriage return, line feed pair are taken into account. This might
- affect the setup of certain types of printer drivers.
-
- If you do make a printed version of this document, and then decide that you do
- not wish to register your copy, you should either pass the printed copy with
- the computer readable copy to another person who may have an interest, or you
- should destroy both copies. This removes any obligation from you to register
- your use by making a payment to the author.
-
- UNDER NO CIRCUMSTANCES SHOULD YOU PRODUCE MORE THAN ONE PRINTED COPY WITHOUT
- PAYMENT OF A REGISTRATION FEE TO THE AUTHOR. If you have registered your use
- and need to register more than one printed copy, please see above for the
- beneficial rates available for this situation.
-
-
-
-
- 0.07 Your expert input to this document
- ==== ==================================
-
-
- If you are an expert or have recently become an expert in areas from which this
- work would benefit, and you would like to provide input to the author so that
- others may benefit from your knowledge, please contact the author. Any extra
- materials provided will be included at this authors sole discretion, but such
- included material will always be given special acknowledgement. Any anonymous
- material will be excluded unconditionally from further consideration.
-
- If you have found this document to be useful but feel that it could be better,
- please write to the author and make constructive suggestions. Criticism will
- be welcomed but only if it is of a constructive nature. Your input as a user
- is needed to help ensure that this document meets your needs today, tomorrow,
- and into the future.
-
- If you do wish to provide updates to this material, please provide these on a
- 1.44M or 720K 3.5 inch floppy disk. Use a simple ascii file format without
- using any control codes except carriage return and line feed. When marking
- changes in the existing text, use the following conventions.
-
- Any source material which is to be changed, should be surrounded with special
- brackets, indicating that it is subject to change. These brackets appear as
- follows:
-
-
- !-!...original text to modify...!=!...new replacement text...!+!
-
-
- It may be most useful to use this convention with complete lines of text, then
- less confusion will result when many small changes are made to detail:
-
-
- !-!
- original body of text
- which needs
- some changes made
- !=!
- new text as
- a replacement
- for the above
- !+!
-
-
- Source material which is to be unconditionally deleted is dealt with as in the
- following manner:
-
-
- !-!
- body of text which needs
- deleting without replacement
- !-!
-
-
- Source material which is to be inserted as entirely new text, is introduced in
- the following way:
-
-
- !+!
- body of text which needs
- interting as entirely
- new material
- !+!
-
-
- Comments which need to be made, but which should not be included in the body of
- the text, may be enclosed with appropriate brackets as follows:
-
-
- !'!
- Note ' is a single quote !
- comments which describe
- the reasons for performing
- edits, deletion or insertion
- of new material
- Note " is a double quote !
- !"!
-
-
- Please note that the above markers cannot contain each other. That is, it is
- possible only to operate with a flat file, and nesting of markers is illegal.
- Markers can however be conjoined together one set following immediately after
- another set, without intervening text.
-
- These conventions must be adopted since the author relies on automated library
- processing software.
-
- All such material will become the property and copyright of the present author.
- Regretfully, no payment can be made for any material provided in this way, and
- disks will not be returned. The reasons for these conditions are simple. The
- author does not have unlimited time available to service this work, so any way
- of making administration easier must be seriously considered. Who knows, if
- this material attracts sufficient registrations, more time might be available.
-
-
-
-
- 0.08 Contacting the author
- ==== =====================
-
-
- The author is a practising software/hardware engineer who often travels abroad
- in connection with an international consultancy business. The contact address
- to use (which is only a forewarding address) is as follows:
-
- _____________________
- | |
- | Andrew Scott |
- | SHAREWARE 01 |
- | c/o 1 Bramcote |
- | Aylesbury |
- | Buckinghamshire |
- | HP20 1QE |
- | ENGLAND |
- |_____________________|
-
-
- There is no possibility of telephone contact simply because the author spends
- long periods of time abroad. This situation is regretted but could change if
- sufficient registrations warrant a different approach.
-
- If you wish to communicate put your letter on a 720K or 1.44M 3.5 inch disc
- with a filename of 'letter.doc'. Do not forget to put your name and address
- on the disc in a file called 'address.doc' then mail it to the above address.
-
- All files should be in plain ascii, without control codes other than carriage
- return and line feed. No other file formats are acceptable. An 'address.doc'
- file should print your name and address exactly as it should be written on an
- envelope to be posted to you. Please note that discs will not be accepted if
- they contain executable files of any type whatsoever. This is to prevent any
- difficulties with software licensing, and to help ensure freedom from viruses.
-
- Please note that the author uses a standard procedure with any received discs.
- This involves using a special bootable program to wipe all files from the disc
- which do not have the extension '.doc'. In particular, the disc is rendered
- unbootable. Only after this special virus proof program has been run is the
- disc read using a conventional industry standard operating system, with a set
- of appropriate adjustments made to the floppy disc drive control software for
- further security protection.
-
- Do please remember this if you need to send a disc.
-
- If you need to send program code, then it must be sent in source form, and you
- must be the author, or possess a license sufficient to transmit source to a
- third party. Please include details of this license in a separate file with
- the name 'license.doc'.
-
- In any case, program fragments are to be preferred, since they make a technical
- point without introducing irrelevant detail. Source should be in some genus of
- 80x86 assembly language.
-
- No written communications can be accepted, since they involve so much handling
- overhead. All discs become the property of the present author on receipt.
-
- The author regrets that failure to observe these requirements will prevent any
- attempted communication from taking place.
-
- The policy of the author is that any licensed files will be erased as soon as
- it is practically possible to do so. The author does not have any interest
- whatsoever in 'data collection' of any type. This is particularly true in the
- case of material which may be the licensable property of others.
-
- Although the author will attempt to respond where appropriate, no undertaking
- can be given on this point, simply due to pressure of time. This unfortunate
- circumstance could change should the level of user support of this work prove
- to be of an appropriate level.
-
-
-
-
- 0.09 Registration and Receipt Form
- ==== =============================
-
-
- Registrations are made only by means of a cheque drawn on a U.K. bank in pounds
- sterling as detailed above. Please make the cheque payable to:
-
- ___________________
- | |
- | Andrew Scott |
- |___________________|
-
-
- All registrations MUST be accompanied by the Registration and Receipt Form that
- appears below. Use your text editor to extract this form then fill it in, or
- alternatively, use the separate file 'register.doc' in the same way. Having
- filled in the form, print it out and enclose it with your cheque. As before,
- the motivation for this is the saving of administration time. Cheques provided
- without the form will be accepted, but of course, no receipt can then be given.
-
- It may be necessary to allow some time to elapse before receiving your receipt.
- Do not be alarmed by this. If you do not require a receipt, please either tick
- the box to state this, or alternatively, just send your cheque unaccompanied.
-
- Please note that it is not the authors policy to keep names and addresses of
- registrees in computer readable form, since this can cause difficulties with
- existing U.K. legislation in terms of overhead cost in time and money.
-
- Please find below the form which MUST accompany your registration cheque. It
- is followed by an example which has been filled in for a ficticious client at
- a U.K. address. After that, another example follows, for a foreign client.
-
-
-
-
- ==============================================================================
- Registration and Receipt Form [Start]
- ==============================================================================
-
-
- When completed, please send a printed version of this form together
- with the appropriate value cheque to the address following:
-
- _____________________
- | |
- | Andrew Scott |
- | SHAREWARE 01 |
- | c/o 1 Bramcote |
- | Aylesbury |
- | Buckinghamshire |
- | HP20 1QE |
- | ENGLAND |
- |_____________________|
-
-
- Client Name and Address (as for an envelope to be posted).
- You MUST use your text editor; handwriting is unreliable.
- Simply leave any unused lines free of text. Please leave
- the numeric fields as they stand, unaltered. Use a clear
- simple typeface when printing this form prior to mailing.
-
-
- 001:
- ----------------------------------------------------
- 002:
- ----------------------------------------------------
- 003:
- ----------------------------------------------------
- 004:
- ----------------------------------------------------
- 005:
- ----------------------------------------------------
- 006:
- ----------------------------------------------------
- 007:
- ----------------------------------------------------
- 008:
- ----------------------------------------------------
- 009:
- ----------------------------------------------------
- 010:
- ----------------------------------------------------
- 011:
- ----------------------------------------------------
- 012:
- ----------------------------------------------------
-
-
- Receipt Required? Please delete 'Yes' if no receipt is required.
-
-
- 120: Yes
- -------------
-
-
- Please indicate here the actual license REGISTRATION FEE you are paying,
- WITHOUT including any provision for U.K. local tax {V.A.T.}.
-
-
- 230:
- -------------
-
-
- If you have an ADDRESS in the U.K. (V.A.T. area) you MUST INCLUDE V.A.T.
- at the CURRENT RATE. It is 17.5% at this time, but may of course change
- later. Your RECEIPT will PROVIDE you with PROOF of V.A.T. SPENDING.
- OVERSEAS client ADDRESSES do NOT pay V.A.T., so for them, this is zero.
- Please indicate here the amount of V.A.T. you are paying.
-
-
- 231:
- -------------
-
-
- This amount MUST match the VALUE of your CHEQUE.
- YOUR CHEQUE MUST BE DRAWN ON A U.K. BANK IN POUNDS STERLING.
- If you have a U.K. address YOU MUST INCLUDE V.A.T.
- If you have a FOREIGN address, you DO NOT pay V.A.T.
- Please indicate here the value of your registration fee together with any
- local U.K. tax {V.A.T.} you are paying.
-
-
- 234:
- -------------
-
-
- Registration Number issued in receipt. Please leave this blank
- unless you have already registered and are increasing the level
- of your existing registration. Do not forget a discount may be
- available to you. See {0.04} Suggested license fees.
-
-
- 340:
- ---------------------------------------------------------
-
-
- ==============================================================================
- Registration and Receipt Form [End]
- ==============================================================================
-
-
-
-
- ==============================================================================
- EXAMPLE UK Registration and Receipt Form [Start] EXAMPLE UK
- ==============================================================================
-
-
- When completed, please send a printed version of this form together
- with the appropriate value cheque to the address following:
-
- _____________________
- | |
- | Andrew Scott |
- | SHAREWARE 01 |
- | c/o 1 Bramcote |
- | Aylesbury |
- | Buckinghamshire |
- | HP20 1QE |
- | ENGLAND |
- |_____________________|
-
-
- Client Name and Address (as for an envelope to be posted).
- You MUST use your text editor; handwriting is unreliable.
- Simply leave any unused lines free of text. Please leave
- the numeric fields as they stand, unaltered. Use a clear
- simple typeface when printing this form prior to mailing.
-
-
- 001: John Smith
- ----------------------------------------------------
- 002: Basement Flat
- ----------------------------------------------------
- 003: Number 3
- ----------------------------------------------------
- 004: Holly Lane
- ----------------------------------------------------
- 005: Beringsbeare
- ----------------------------------------------------
- 006: Tullingdon
- ----------------------------------------------------
- 007: Near Great Minsforth
- ----------------------------------------------------
- 008: Shrafton
- ----------------------------------------------------
- 009: Shropshire
- ----------------------------------------------------
- 010: SH12 4PB
- ----------------------------------------------------
- 011:
- ----------------------------------------------------
- 012:
- ----------------------------------------------------
-
-
- Receipt Required? Please delete 'Yes' if no receipt is required.
-
-
- 120: Yes
- -------------
-
-
- Please indicate here the actual license REGISTRATION FEE you are paying,
- WITHOUT including any provision for U.K. local tax {V.A.T.}.
-
-
- 230: 16.00
- -------------
-
-
- If you have an ADDRESS in the U.K. (V.A.T. area) you MUST INCLUDE V.A.T.
- at the CURRENT RATE. It is 17.5% at this time, but may of course change
- later. Your RECEIPT will PROVIDE you with PROOF of V.A.T. SPENDING.
- OVERSEAS client ADDRESSES do NOT pay V.A.T., so for them, this is zero.
- Please indicate here the amount of V.A.T. you are paying.
-
-
- 231: 2.80
- -------------
-
-
- This amount MUST match the VALUE of your CHEQUE.
- YOUR CHEQUE MUST BE DRAWN ON A U.K. BANK IN POUNDS STERLING.
- If you have a U.K. address YOU MUST INCLUDE V.A.T.
- If you have a FOREIGN address, you DO NOT pay V.A.T.
- Please indicate here the value of your registration fee together with any
- local U.K. tax {V.A.T.} you are paying.
-
-
- 234: 18.80
- -------------
-
-
- Registration Number issued in receipt. Please leave this blank
- unless you have already registered and are increasing the level
- of your existing registration. Do not forget a discount may be
- available to you. See {0.04} Suggested license fees.
-
-
- 340:
- ---------------------------------------------------------
-
-
- ==============================================================================
- EXAMPLE UK Registration and Receipt Form [End] EXAMPLE UK
- ==============================================================================
-
-
-
-
- ==============================================================================
- EXAMPLE FOREIGN Registration and Receipt Form [Start] EXAMPLE FOREIGN
- ==============================================================================
-
-
- When completed, please send a printed version of this form together
- with the appropriate value cheque to the address following:
-
- _____________________
- | |
- | Andrew Scott |
- | SHAREWARE 01 |
- | c/o 1 Bramcote |
- | Aylesbury |
- | Buckinghamshire |
- | HP20 1QE |
- | ENGLAND |
- |_____________________|
-
-
- Client Name and Address (as for an envelope to be posted).
- You MUST use your text editor; handwriting is unreliable.
- Simply leave any unused lines free of text. Please leave
- the numeric fields as they stand, unaltered. Use a clear
- simple typeface when printing this form prior to mailing.
-
-
- 001: Johan Schmidt
- ----------------------------------------------------
- 002: Heliger Strasse 13
- ----------------------------------------------------
- 003: Markt Windsheim
- ----------------------------------------------------
- 004: Langenburg
- ----------------------------------------------------
- 005: Aschaffenburg
- ----------------------------------------------------
- 006: Frankfurt a/d Main
- ----------------------------------------------------
- 007: Germany
- ----------------------------------------------------
- 008:
- ----------------------------------------------------
- 009:
- ----------------------------------------------------
- 010:
- ----------------------------------------------------
- 011:
- ----------------------------------------------------
- 012:
- ----------------------------------------------------
-
-
- Receipt Required? Please delete 'Yes' if no receipt is required.
-
-
- 120: Yes
- -------------
-
-
- Please indicate here the actual license REGISTRATION FEE you are paying,
- WITHOUT including any provision for U.K. local tax {V.A.T.}.
-
-
- 230: 16.00
- -------------
-
-
- If you have an ADDRESS in the U.K. (V.A.T. area) you MUST INCLUDE V.A.T.
- at the CURRENT RATE. It is 17.5% at this time, but may of course change
- later. Your RECEIPT will PROVIDE you with PROOF of V.A.T. SPENDING.
- OVERSEAS client ADDRESSES do NOT pay V.A.T., so for them, this is zero.
- Please indicate here the amount of V.A.T. you are paying.
-
-
- 231: 0.0
- -------------
-
-
- This amount MUST match the VALUE of your CHEQUE.
- YOUR CHEQUE MUST BE DRAWN ON A U.K. BANK IN POUNDS STERLING.
- If you have a U.K. address YOU MUST INCLUDE V.A.T.
- If you have a FOREIGN address, you DO NOT pay V.A.T.
- Please indicate here the value of your registration fee together with any
- local U.K. tax {V.A.T.} you are paying.
-
-
- 234: 16.00
- -------------
-
-
- Registration Number issued in receipt. Please leave this blank
- unless you have already registered and are increasing the level
- of your existing registration. Do not forget a discount may be
- available to you. See {0.04} Suggested license fees.
-
-
- 340:
- ---------------------------------------------------------
-
-
- ==============================================================================
- EXAMPLE FOREIGN Registration and Receipt Form [End] EXAMPLE FOREIGN
- ==============================================================================
-
-
-
- 0.s Summary
- === =======
-
-
- This document is a copyright work, for which a license to use is required.
- Details are given for registering a user license, with appropriate payment.
-
- Technical notes on the source character set employed in this document are
- made for those needing to produce a printed version of this work.
-
- Expert input from people who have seen this document is invited with a view to
- increasing the usefulness, relevance and quality for existing and prospective
- registered users.
-
- Details are given on procedure for contact with the author, and for making
- payment for a user license.
-
- A disclaimer is presented concerned with fitness for use of this work.
-
-
-
-
- 1. Preface: how this document will help you
- == ========================================
-
-
- 1.01 Goals of this document
- ==== ======================
-
-
- The goal of this document is the description of means for programming the VGA
- controller chips found in contemporary Intel 80x86 processor powered industry
- standard architecture computer systems.
-
- To program any device effectively requires intimate knowledge of environmental
- issues which determine the context within which the device finds application,
- the technical issues which determine the structure of the device, and finally,
- full details of the programming interface available to the host machine.
-
- We will first consider the background against which any computer system works.
- This will broaden into a brief overview of the structures which comprise any
- computer system, and which are necessary to support computation. Computation
- is then considered as a modelling activity. We will consider means for making
- models, and the representation of models in people oriented terms.
-
- These considerations will naturally broaden into a discussion of video image
- generation and the employment of images as an essential part of the process
- of communication between people and computer systems.
-
- We consider the reasons why images can be appropriate for the expression of
- complex modelling relations, which then leads naturally to considerations for
- the technical specification of image generating capabilities.
-
- The architectural aspects of the host machine are then discussed, in particular
- the implications of memory mapped interfaces, and the means for controlling the
- operation of a very highly configurable video image generator chip. This gives
- reasons for the register input output structures commonly used when programming
- the VGA controller chip.
-
- Details of the conceptual and physical structure of the video image generator
- are examined, with discussion of the motivation for the various programmable
- features introduced into the hardware. The characteristics of the hardware
- are given, with details of the user oriented operations which motivate them,
- and the programming strategies to be adopted in their use for achievement of
- maximally high image manipulation performance.
-
- The main part of this work is centred upon the highly complex register set that
- provides the VGA controller with all its many programmable option settings. It
- is the interaction of these settings which, for the most part, makes the VGA so
- difficult to understand and program. We will describe the data content of each
- register, in a systematic manner. There will be discussion concerning the real
- design motivation for providing the particular feature which is being described
- which will in most cases considerably clarify complex issues. Further, related
- features are brought into focus, with either a useful comment as introduction,
- or with a full discussion. In all cases, cross references are given at the top
- of each register description. These will yield considerable insight, when used
- to direct attention on a particular point of interest.
-
- By following the cross references in a random manner the informed reader will
- very quickly build up a complete picture of essential VGA operation. This is
- very important prior to starting any serious programming for this very highly
- flexible but very complex device. Excellent advice to follow before creating
- any program for the VGA device is to obtain from the original manufacturer of
- your particular VGA absolutely all the technical documentation available. In
- this way, you will hopefully have some chance of being adequately informed as
- most VGA controller chips now available support extensive additional features
- which will, for the most part, be completely non-standard.
-
-
-
-
- 1.02 Suggested audience orientation
- ==== ==============================
-
-
- This document is primarily concerned with a particularly technical aspect of
- programming the industry standard architecture machines employing Intel 80x86
- processor chips. As such, the reader would benefit considerably from a good
- knowledge of Intel 80x86 assembly language programming, including architectural
- appreciation of that line of processor chips. In particular, the memory access
- and input output model of the 8086 processor chip should be understood.
-
- If the reader is not concerned with the intimate details of VGA programming,
- this document should provide all the source material neeeded to form a view of
- the capabilities and attendant design issues facing a VGA programmer. This
- might be of interest to a system designer who is addressing the question of
- whether to develop a product using the full capability of the VGA video system.
-
- Knowledge of hardware structures would be useful, but should not be essential
- for obtaining spectacular performance from the hardware described. However,
- some degree of conceptual awareness of hardware structures will be developed in
- this document, and without this knowledge, it would be very difficult to obtain
- original practical results for a special application. This level of knowledge
- is fairly simple, so should not prove onerous to even the most wisened hardware
- illiterate programmer.
-
- Programming templates will be given in a generic 8086 assembly language,
- without any pseudo-operation context. The intention is to produce practical
- conceptual knowledge, which is perpetually reuseable, rather than a set of
- recipes for various commonly occuring problems. The emphasis is firmly on
- high performance, which means writing code with a solid understanding of what
- is happening in the hardware. Only in this way can the full power of the VGA
- controller chip be realised in practical application.
-
- It should be fairly clear by now that we will not be concerned with means by
- which the VGA can be programmed with involvement of a video bios {basic input
- output system}. We will instead consider the questions involved in writing
- our own application specific bios, using only the naked resources provided by
- the VGA controller chip itself. People interested in programming using the
- various bios facilities will, nevertheless, find this document interesting in
- the sense that having understood this material, the operations of the bios
- will become much clearer. This means more effective programming, even at the
- more constrained level of bios operations. In addition, the potential always
- exists to perform mixed bios and customised high speed programming of the VGA
- controller for special applications which do not warrant the development of a
- full custom programmed solution. In all these situations, the material given
- here should help the programmer to obtain the desired results without too much
- fuss or heartache.
-
- Since the price of VGA controllers with massive amounts of memory has reached
- a very affordable level at the time of writing {summer of 1991}, we will not
- dwell on the various video standards which preceeded VGA, but will from time
- to time make parenthetic notes about particular compatibility considerations
- which motivate various aspects of the hardware design. This will represent
- the full extent of our interest in such compatibility issues. In particular,
- we will often assume that we are using a VGA controller with certain specific
- characteristics. That is, we assume a Trident 8900 VGA controller chip, with
- a full one megabyte of video memory. These assumptions will not generally
- upset the validity of the concepts and programming techniques discussed, but
- do serve to provide a complete specification of the environment within which
- this document was conceived and written.
-
- The most important qualification for gaining benefit from this document is an
- interest in understanding the subject matter, and a relatively keen intellect.
- The rest is the ability to author well conceived program code, and the strength
- to accept that mistakes need to be made before outstanding results are seen.
-
- Do remember that when dealing with inherantly complex issues, the only way to
- succeed is to use the appropriate approach. As Sir Winston Churchill once said
- when speaking to the Oxford University Student Union:
-
- "Never give up". "Never, never, give up". "Never, never, never, give up".
-
- This was his address in its entirety, which received rapturous applause and
- doubtless helped to change the lives of many as a result.
-
-
-
-
- 1.03 How to use this document
- ==== ========================
-
-
- We spend some time developing a model of computation, which embraces the
- hardware and software structures necessary for practical problem solving
- using computer based modeling techniques. This material can be ommited
- by those who are interested in serious descriptions of the hardware form
- of the VGA controller chip, and the software interface available providing
- control using the host machine.
-
- Students of computation may find the discussion of interst, since it draws a
- parallel between the general basis for computation and the generic hardware
- manipulation facilities provided within the VGA controller chip. In this
- way, the VGA controller chip can be seen as a specialised processor adapted
- for the specific operations required for image transformation and transport.
-
- Specifically, some VGA controller image manipulation primitives can be seen
- to have the control element of the image computation provided explicitly by
- the host processor. This partitioning of the control leads to a flexibility
- which would not otherwise exist, and can be interpreted as a natural extension
- of the classical architecture of a general purpose digital computer system.
- To employ the Intel nomenclature, the VGA controller chip can under practical
- conditions be viewed as a very specialised (so therefore complex) co-processor
- device.
-
-
-
-
- 1.s Summary
- === =======
-
-
- This document is concerned with high performance programming for the video
- graphics array controller Trident 8900, equipped with 1 megabyte of memory.
-
- The emphasis is on programming for high performance image manipulation and
- presentation, principally using assembly language without use of a video bios.
-
- A guide to the relevant chapters is given for those with various backgrounds,
- motivations and interests.
-
-
-
-
- 2. Orientation - the computer system
- == =================================
-
-
- 2.01 A computer system structure
- ==== ===========================
-
-
- A computer system is a collection of many different component parts. Some of
- these are fixed and invariant in structure, whilst others are only partially
- fixed in structure so may in practise have a variable structure.
-
- We usually think of these two distinct properties as belonging to the hardware
- components and software components, respectively, of a computer system. These
- two types of components make up an entire computer system, which consists only
- of hardware components and software components.
-
- The hardware components of a computer system represent the finite fixed means
- available to enact a computation described in precise detail by the software
- components of that computer system.
-
- The software components of a computer system determine every detail of the
- computation of that system, by means of a moment by moment selection of the
- actual hardware capabilities brought into play, from the entire set of possible
- capabilities available. We talk about the entire collection of software
- components associated with a computer system as the program for that computer
- system. Therefore a program is a complete collection of software components,
- sufficient to fully direct the hardware which makes up a computer system.
-
-
-
-
- 2.02 Hardware of a computer system
- ==== =============================
-
-
- The physical reality of the computer system hardware appears as a number of
- fundamental units, interconnected with each other, but each of which is needed
- in any general purpose digital computer system. {We distinguish this class of
- computer system in particular, since there are other classes of computer system
- with which we will not concern ourselves.} These units are as follows:
-
- 1. Input unit
- 2. Processing unit
- 3. Memory unit
- 4. Control unit
- 5. Output unit
-
- Each of these units is physically constructed from a mix of components which
- could be classed as mechanical, electro-mechanical, electro-optical or
- electronic. Other technologies may be used, but it is essential to understand
- that the technology implementing hardware capability is not in itself crucial;
- rather, it is the information processing capabilities provided by the hardware
- units themselves which is important.
-
- In some cases, only one class of component is used in the construction of a
- particular type of unit. For example, an input unit might use mechanical,
- electro-mechanical and electronic components in its realisation. This would
- contrast with a processing unit which might use only electronic components in
- its construction. The construction is not as important as the fixed set of
- capabilities supported by each unit, expressed in terms of information transfer
- and modification abilities of a particular unit, as noted above.
-
-
-
-
- 2.03 Hardware: the input unit
- ==== ========================
-
-
- The input unit has the fixed capability to obtain information from somewhere
- outside the computer system and deliver it into the computer system in a timely
- manner. This is the only purpose for which the input unit is used.
-
- The somewhere outside is usually referred to as the external environment within
- which the computer system operates.
-
-
-
-
- 2.04 Hardware: the processing unit
- ==== =============================
-
-
- The processing unit has a set of fixed capabilities for processing information,
- that is, for changing information in a controlled manner. Some of the ways in
- which information may be changed are given below:
-
- 1. Reduction of information.
-
- This corresponds to removal of some of the information content of
- data, thereby classifying data into a set of predetermined groups.
-
- When one knows the classification of a data item, it is not then
- possible to say with certainty what exact data derived that class,
- since information loss has occured. Therefore information loss is
- associated with a one way process which cannot then be reversed to
- obtain the original data.
-
- 2. Transformation of information.
-
- This does not change the information content of data, but merely
- changes the representation of that data, to make it suitable for
- use within a particular computational environment.
-
- It is in principle possible to reverse the transformation of data
- such that the transformed data could give rise to the original
- data, assuming sufficient computational resources are available to
- effect the inverse transformation. {In fact, there may be reasons
- why the inverse transformation does not exist in practise, although
- this does not of itself deny the principle.}
-
- 3. Comparison of information.
-
- This actually creates information based upon the representation of
- existing information. This newly created information is available
- for further processing just as any other information would be.
-
- By changing the representation of data, the result of comparing two
- data items can change. The data representation is what determines
- the comparison result, not the information content of the data.
-
- These are the only ways available for processing information, so all possible
- computations are built up from these types of information manipulation.
-
-
-
-
- 2.05 Hardware: the memory unit
- ==== =========================
-
-
- The memory unit has the fixed capability of accepting information at one moment
- in time, and delivering that information at a later moment in time without any
- change having occured to that information in the intervening time. The amount
- of time which passes between the presentation of information to the memory unit
- and the later recovery of that unaltered information is not important for the
- operation of the memory. In that sense it is completely time independant.
-
-
-
-
- 2.06 Hardware: the control unit
- ==== ==========================
-
-
- The control unit mediates between the instructions which comprise a program and
- the operation of all the hardware units which comprise the computer hardware.
- The control unit manages and directs all flows of information within the entire
- computer system. No computation can proceed without the involvement of the
- control unit, which initiates input information flows, directs the output of
- information, determines the processing of information and the presentation to
- and recovery from memory of information.
-
-
-
-
- 2.07 Hardware: the output unit
- ==== =========================
-
-
- The output unit is equipped with fixed capability to accept information from
- within the computer system and present that information in timely manner to
- somewhere outside the computer system. This destination is referred to as the
- external environment, which is also the source of input information, as noted
- above.
-
-
-
-
- 2.08 Hardware: the external environment
- ==== ==================================
-
-
- This means that a computer system takes its input from, and delivers output to,
- its external environment. In this view of things, the computer system itself
- is completely separate from the external environment which contains information
- to process and which in turn accepts processed information. This observation
- is important, since it is essential that the computer system be able to act in
- a manner completely independant of the information environment with which it is
- associated. It is only when this is true that a program can be seen to be the
- sole determinant of the activities of a computer system.
-
-
-
-
- 2.09 Hardware: control by program
- ==== ============================
-
-
- All these activities are controlled by the program which controls the operation
- of the control unit and thence the operation of the entire computer system. So
- the hardware component of the computer system represented by the control unit
- is the fixed means by which the entire computer system fixed capabilities are
- organised and controlled, but the moment by moment operation of this unit is in
- turn controlled through the statements which comprise the program controlling
- the computer system. This program comprises the full collection of individual
- software components which together with the hardware components make up the
- complete computer system, thereby determining its entire behaviour.
-
-
-
-
- 2.s Summary
- === =======
-
-
- The structure of a computer system is described in terms of components which
- appear as hardware and software. The nature of the hardware components and
- their function is examined. In particular, the types of information processes
- available to an information processing unit are discussed. The program as the
- ultimate arbiter of computer system operational control is seen as a collection
- of all the software components of a computer system.
-
-
-
-
- 3. Modelling using a computer system
- == =================================
-
-
- 3.01 Computer system operation
- ==== =========================
-
-
- We have seen that a computer system comprises hardware units with fixed sets
- of capabilities which interact under the direction of the control unit. This
- control unit is itself controlled by the software components which when taken
- together comprise a program.
-
- So now we know what a computer system comprises. This does not directly help
- to answer the question concerning what it is a computer system does. Once we
- know what a computer system does, we will understand the motivation for being
- interested in a computer system. This question is what we will now look at.
-
-
-
-
- 3.02 The original computer
- ==== =====================
-
- We can look back in time to the days prior to the existence of electronic
- computers, when the english language held that a computer was a person who by
- dint of intelligence, knowledge and insight, performed calculations of interest
- using just paper and pen.
-
- This is the sort of activity we engage in when we ask how much we have spent
- on the basket of shopping we have just bought. But we can also ask questions
- about the future, such as how much would it cost to buy all the food necessary
- to entertain a group of friends each of whom has a different taste from each of
- the others.
-
- If we decide that the proposed evening would be too expensive, we can then ask
- what would be the most economical way of entertaining half our friends, knowing
- the range of meals which each would find acceptable. This might involve making
- a decision regarding who should attend, followed by a decision as to what each
- guest should be given to eat.
-
- Of course, this latter problem would quickly prove impractical to solve if we
- had a large number of friends, each of who delighted in a wide range of special
- dishes from around the world. This introduces the notion of the tractability
- of solving a particular problem, given the context of a particular method for
- solving that problem.
-
-
-
-
- 3.03 Computation as modelling
- ==== ========================
-
-
- All of these activities are completely characterised by the posing of some kind
- of question and the discovery of an appropriate answer. The connection between
- the question and the answer is known as a model. The model provides all the
- information required in order to specify the context in which the question is
- framed, and within which the answer must be interpreted. Naturally then, if
- the model changes, then so too will the associated questions and their answers.
-
- The person whos job was that of computer was required to solve problems given
- as questions, by providing answers given numerically. This meant that usually
- the problems posed were of a numerical nature, requiring for their solution
- the application of numerical formulae. These formulae and the knowledge needed
- to manipulate them were provided by the computer as a skilled worker.
-
- In some other situations, there was no directly applicable numerical model for
- solving a problem. This was so when deciding upon the invitations for half our
- friends to an evening meal. In this case, a structural model is required, and
- this model must be developed by the expert computer, before being applied to
- the solution of the given problem.
-
-
-
-
- 3.04 The essentials of computation
- ==== =============================
-
-
- It is in principle, possible to look in detail at all the activities of such a
- skilled computer, in order to discover the simplest steps taken during the
- solution of any problem. If this is done, it turns out that there are a very
- small number of simplest such steps, which suffice for the solution of any
- problem whatsoever, providing that the problem is indeed soluable. {There are
- some problems which appear to be insoluable by any currently known methods, but
- this should not concern us since most of these types of problems are not too
- relevant from a practical point of view.}
-
- Realising this, we could then conjecture that we could build a machine in some
- appropriate technology, capable of realising each one of these simplest steps.
- The exact sequence of simplest steps actually used to solve any given problem,
- could then be written out as a sequence of instructions, in a form suitable for
- controlling the machine we have just defined.
-
- If this is done, we can then recognise all the elements of a computer system.
-
-
-
-
- 3.05 Problem solving through model building
- ==== ======================================
-
-
- It is now possible to see why a computer system is interesting and useful. We
- can solve any soluable problem for which it is possible to express a model by
- applying a computer system to the expression of the problem within that model.
-
- We usually talk of a program to solve a particular problem, or type of problem
- which occurs frequently in practise. The use of a program to control the
- operation of a computer system comprises the execution of that program by the
- computer system. The activity of a computer system while executing a program
- is said to be that of computation. Computation solves a problem expressed in
- the context of a given model, by supplying a solution to the problem expressed
- in that same context.
-
- The essential point is that we can represent some aspect of a reality by means
- of an appropriate model, which can then be manipulated by a computer system.
- In this way we can ask questions and obtain answers, without affecting the real
- world reality. The advantage of this is clear when one considers the actual
- cost of answering some difficult types of question by means of an experiment.
-
- For example, how many atomic bombs of a cetain size would it take to destroy
- mankind? Clearly, if we insist on obtaining an answer to this particular type
- of question, we would benefit considerably by using a computer based model.
-
-
-
-
- 3.06 Types of models
- ==== ===============
-
-
- Computation is effectively a modelling process, so we will consider the types
- of modelling with which real world problems may be effectively expressed. In
- this manner we can conclude that there are really two types of models:
-
- 1. Numerical models
- 2. Structural models
-
- Numerical models rely completely upon relations between numeric values given
- by formulae which themselves represent the model. The values describe certain
- attributes which are applicable in the modelled situation. Given sufficient
- information, it is possible to use numerical methods to obtain values for some
- unknown quantities represented by the model. In this way, problems which are
- concerned with discovering values for unknown quantites can be solved, given
- that sufficient known quantities are available.
-
- Structural models represent collections of attributes which cluster in groups
- known as objects. The structural composition of any given object may vary in
- permitted ways which are themselves characteristic of the type of object. That
- is, the structure of an object may not be necessarily fixed. An object belongs
- to a class of objects, which represents a collection of object types each of
- which possesses common characteristics. This enables objects to represent those
- situations where the morphology is either unknown in advance or is determined
- dynamically on a moment by moment basis.
-
- In general, a structural model will employ embedded within it, many numerical
- models, each for use in connection with particular situations or circumstances
- arising in the model itself, or in connection with manipulation of the model.
- For this reason, it is normally the case that structural models tend to be more
- complex than numerical models, because they are usually larger than numerical
- models. However, special types of numerical models do occur which are very
- complex indeed. {Linear programming equations for optimising the output from
- an oil refinary give just one example of such a case.}
-
-
-
-
- 3.07 Objects and structural models
- ==== =============================
-
-
- Objects may theselves be composed of other objects, with variable structure, so
- in principle, any structure can be modelled by means of a hierarchy of various
- component objects of arbitrary complexity. There is no restriction regarding
- the use of network structures as objects, so strictly hierarchial arrangements
- of objects may be used or ignored according to the modelling requirement. This
- provides complete modelling freedom.
-
- The types of questions which we might ask in connection with structural models
- are generally concerned with forming collections of objects so that some given
- attribute is minimised or maximised over the group. This type of question can
- provide the answers to questions concerned with finding minimal cost routes for
- travelling between a collection of cities, or the cheapest or perhaps most time
- efficient synthesis route for a molecule, given certain precursor stock.
-
- Notice that although we have identified that an object is just a collection of
- attributes, we have not identified what we might mean by attribute. Similarly
- we have associated values with attributes, but have not considered what a value
- might be, or what it might represent.
-
-
-
-
- 3.08 Attributes, values and value spaces
- ==== ===================================
-
-
- An attribute is nothing more than the expression of one particular possibility
- from a collection of such possibilities. An attribute takes on a value, and
- that value has the potential to change from moment to moment. {Of course, for
- a given model, an attribute may take a single constant value.} In this way, an
- attribute is associated with a set of potential values, which does not change
- during the passage of time. The values associated with an attribute determine
- the type of the attribute, that is, the nature of the information imparted by,
- or associated with the attribute.
-
- An attribute will take on a single value at any particular moment. We speak of
- a single value chosen from a value space. A value space is simply the complete
- collection of all possible values of a related type. Here related type implies
- that all the values play an identical role in any model of which they may be a
- part.
-
- The association of an attribute with a value represents the minimum expression
- of information possible. Although a value represents minimal information, it
- is usually the case that the value space containing that value possesses some
- internal structure which permits more information to be associated with the
- value than might at first appear possible.
-
- Typically this will be so where other values within the same value space are
- combined by means of information processing steps, such that new models result
- which represent different interpretations of the original model. The values
- which are combined in this way may be attributes of objects, or purely numeric
- quantities associated with numerical models.
-
- In fact, for processing of values to take place at all, certain properties must
- exist in the underlying value space. {In general, very weak properties in the
- value space are adequate to support computation. However, in any practical
- computation scheme, stronger properties are needed which have a significant
- effect on the richness of available algorithms to solve any particular problem.
- This richness manifests itself as a change from algorithmic intractability to
- eminently practical algorithms, as the properties of the value space increase
- in strength.}
-
-
-
-
- 3.09 Some properties of value spaces
- ==== ===============================
-
-
- In any type of modelling scheme, certain underlying properties of the various
- value spaces present are employed so frequently that they become indispensible
- to any practical modelling construction. These properties are identical to the
- properties of some axiomatic number systems studied by mathematicians. Some of
- the more important properties for computational modelling are included below:
-
- 1. An attribute takes a single value from a finite set of similar values
- known as a value space for the particular attribute type.
-
- 2. There is a way of assessing the similarity or difference of any values
- from the same set of possible values. This provides for the relations
- equal_to, not_equal_to, between any attributes of similar type.
-
- 3. There may be an ordering specified for the set of possible values. In
- this case, it is possible to assess the similarity or difference of any
- values from the set, in terms of the relations less_than, greater_than,
- equal_to, not_equal_to. It is also possible to arrange any group of
- values according to their position within the specified ordering. It
- may be that there exists more than one possible ordering over any given
- value space.
-
- 4. Given two values from the same set of possible values, there is a way
- of describing their difference, which is a measure of how distant they
- are from each other assuming a special ordering of the value space made
- available for this particular purpose. One difference can be produced
- for every pair of values in the value space.
-
- 5. A difference can potentially be either a signed difference or an unsigned
- difference. A signed difference indicates a direction, and a magnitude,
- whereas an unsigned difference has a magnitude only. Some value spaces
- do not have a signed difference defined for them.
-
- 6. The difference between two values from the value space is itself a value
- either of the same value space, or of another value space made available
- for the particular purpose of expressing differences.
-
- 7. Every value in a value space is associated with an ordinal number, which
- gives the position in the value space at which the value occurs, assuming
- the value space to be ordered according to an ordering made available for
- just this purpose.
-
- 8. Every value space is finite, and there is a value space which provides
- values capable of describing the size of all other value spaces. There
- is a natural ordering specified for this size descriptive value space.
-
- 9. There is a value space which contains all other value spaces, over which
- a natural ordering is defined. This natural ordering defines the natural
- ordering for every contained value space.
-
- There are many other properties which may be required in the practical solution
- of computational models, but these properties give the essential features of a
- value space necessary to support useful modelling. The essential point to see
- is that values can be thought of as being associated with a continuum which
- supports the notions of closeness and distance. These notions are vital for
- the construction of computational models as we will soon appreciate.
-
-
-
-
- 3.10 Simple values, collected values
- ==== ===============================
-
-
- A computational model consists of a collection of attributes, each of which
- associates with a single value at any given moment. Attributes may collect
- together as objects. In turn, objects may be associated with other objects.
-
- This provides the ability to model collections of real world objects each of
- which has relations with other real world objects. For the real world object,
- there will typically be a set of characteristics which describe that object.
-
- Each of the charateristics can usefully be modelled by an attribute of a type
- appropriate to the values associated with that particular characteristic. As
- an example, consider a model of a real world gas pipeline. The properties of
- interest might be as follows:
-
- 1. [m] Physical dimensions.
- 2. [s] Maximum service pressure.
- 3. [m] Chemical compatibility.
- 4. [m] Maximum flow rate data.
- 5. [m] Pressure drop / flow rate characteristics.
- 6. [s] Coefficient of expansion of a pipe segment.
- 7. [m] Optimum economic pressure drop.
- 8. [s] Date of commissioning.
- 9. [s] Major inspection interval.
- 10. [m] Results of previous inspections.
- 11. [m] Welding inspection certificate reference numbers.
-
- These values are either simple values or a collection of a number of values.
- For an example of simple values see (2,6,8,9) above. The remaining attributes
- collect together as multi-attributed objects which each describe what is in
- effect, a single value of complex internal structure.
-
- We can see that for models of practical interest, there must be a means for
- collecting individual values together to represent multivalued aspects of the
- modelled reality. In similar fashion, it must be possible to collect together
- objects into groups, which may collectively appear to behave as an object with
- complex internal structure.
-
- We have not yet considered how the representation of collections of attributes
- might be possible in a computational setting. To do this, we must consider an
- aspect of computational modelling which we have so far ignored.
-
- Until now, we have considered that processes are available for the manipulation
- of information. However, apart from suggesting that information is ultimately
- represented as simple values selected from an appropriate value space, we have
- not considered exactly how that information might be held in a computer system.
-
-
-
-
- 3.11 Models with memory
- ==== ==================
-
-
- All models consist of constant components which never change in value, together
- with variable components which do change in value, without which no model could
- be used to support computational problem solving. The fact that some values
- always remain constant leads to the question of how it might be possible to
- model constancy. In fact we can conveniently manage this by means of the piece
- of hardware described above as a memory unit. A memory unit can store a value
- without that value changing, no matter how much time has elapsed before the
- request to retrieve the value is given. Furthermore, no matter how many times
- the value is retrieved, it does not change. For this reason, a memory unit is
- vitally important in any computational modelling activity.
-
- Similarly, by using the properties of a memory unit in an appropriate manner,
- we can make the memory preserve the value of attributes which themselves make
- association with different values from moment to moment during the modelling
- activity. To see how this can be made to work, we must look in detail at the
- manner in which a memory unit operates.
-
-
-
-
- 3.12 The memory store operation
- ==== ==========================
-
-
- In order to get a memory unit to store a particular value, it is necessary to
- provide a special value known as an address, which will be used by the memory
- to give a unique identity to the value actually being stored. So to store a
- value, we first choose an address from the value space of addresses, then give
- the memory an instruction to associate the address with the value to be stored.
- The operation engaged in by the memory, in order to form this association, is
- termed a store operation. The instruction which causes the operation to be
- carried out is termed a store instruction.
-
- The association between an address value and the stored value during a store
- operation is maintained for all time, until changed. But before we consider
- how such an association might be changed, we will see how a value stored by a
- memory may be retrieved for further use outside the memory.
-
-
-
-
- 3.13 The memory load operation
- ==== =========================
-
-
- A memory unit responds to two types of instruction. We have seen above how the
- store instruction can change the way an association is remembered by the memory
- unit. There is another instruction which is termed a load instruction. This
- results in the memory performing a load operation. For a load operation to be
- operate successfully, the memory unit must be presented with an address value
- which must have been given at the time a store operation was made. Given that
- a store did actually take place using that address, the memory unit retrieves
- the value.
-
- This may not sound very useful, since it would appear that, in order to access
- any stored information from a memory unit, a unique value must be associated
- with every number stored. In this way, it would seem that we would then have
- to somehow remember the same number of address values as the number of values
- stored in the memory. This is of course a totally impractical situation. We
- will see shortly how a memory unit may be usefully employed without having to
- remember endless quantities of address values.
-
- We have seen how a store instruction provides the address and value association
- which can then later be used to retrieve the value given the address. We have
- not seen how we might change an existing address and value association, so that
- a model may be made of a value which changes from moment to moment during the
- modelling process.
-
-
-
-
- 3.14 Modelling constants, variables
- ==== ==============================
-
-
- If we fail to ever make an association between an address and a value, using a
- store instruction, any load operation conducted using that address will return
- a value whose nature is unpredictable. A value is returned, but it will be of
- a random nature. If we perform a store operation, then retrieve the value by
- using the same address in a load operation, the original stored value will be
- returned. If however, we perform two consecutive store operations to the same
- address, using different values on each occasion, then perform a load using the
- same address, the value returned will be the latest value stored.
-
- In this way, a memory can be made to keep a value for as long as required, then
- change it by means of a new store operation using the appropriate address. In
- this way, a memory unit can be made to model constancy and change. The store
- operation determines whether a load operation at a given address will retrieve
- a constant value, or a variable value. If only one store operation is made to
- an address, then the value stored will always have the same value, so will be
- constant. Otherwise, the values stored to an address may be different from one
- another, so any associated load operations will retrieve the changed value on
- each occasion.
-
-
-
-
- 3.15 The problem of addresses
- ==== ========================
-
-
- We noticed above that a memory unit would not be very practical if for each of
- the stored values, it would be required to keep a note somewhere of the address
- by means of which it might be retrieved. We will now see why this difficulty
- does not occur in practise.
-
- A model is not something which remains static. It is used to solve problems,
- using computational activity to achieve a series of transformations of models
- until a solution can be found. The development of new interpretations of the
- already available models is necessary to provide the information which will
- ultimately solve the problem being addressed.
-
- Implicit in all this is a set of instructions which dictate exactly how this
- process of model refinement will take place. These instructions can contain
- constant values of direct or indirect use to the model. An indirect use for
- a constant value would be that of a memory address. In this way, the question
- of remembering addresses diminishes, since they can be included in the program
- so long as they are constant in value.
-
- In fact, we will not generally need the same number of address values as values
- stored in a memory unit for other reasons which will soon become clear. The
- nature of information and therefore also of models, is that of natural grouping
- into connected entities which we term objects. Therefore, for any particular
- aspect of a model, various values which are associated together, may easily be
- stored close by each other in memory. For this to work, we must have a notion
- of closeness of two values. Since an address is a value similar to any other
- value, we will have the idea of closeness defined between two addresses.
-
- In this way, we can choose a special address value representative of the close
- grouping of addresses belonging to an associated group of values in memory.
-
- This special address will be only a small distance away from any address values
- assigned to values in the group. Therefore we can apply a shorthand method of
- accessing any of these related values. This involves adding a small value to
- the special address value, to yield the actual address in memory for any needed
- value group member. The special address value is generally known as a base
- address, whilst the small value added to the base address is termed an offset.
-
-
-
-
- 3.16 Structures expressed by means of values
- ==== =======================================
-
-
- We have seen that a memory is a vital component of any computational modelling
- scheme, and that the representation of collections of values within a memory is
- entirely natural. We will now think about the way in which object collections
- may be arranged into a grouping.
-
- Any collection of values in memory will have a characteristic base address. By
- recognising that a base address is really just a value, it can be stored in a
- memory just like any other value. It is this possibility which permits groups
- of objects to be formed with ease. To form a group of objects, take the base
- address of each individual component object, then store all the base addresses
- as a collection of values making up a new compound object. Given the base
- address of the compound object, it becomes possible to access any value in any
- of the member objects by means of judicious application of the relevant offset
- values.
-
- An important point to consider is that the number of objects sharing a given
- internal structure (and thus set of associated characteristic offset values) is
- usually large in a model of any complexity. In this way, memory access using a
- large base address value with a small offset value for each group member gives
- a very compact representation for the final address of each value. Since the
- base addresses and offsets are stored with the instructions representing the
- program, the program size is reduced as a consequence.
-
-
-
-
- 3.17 The program as a model
- ==== ======================
-
-
- It should be clear by now that a program consists of instructions, and these
- instructions may be closely associated in some way with constant values which
- may be used in various ways. One use for these values is as part of the model
- which is being presented for solution of a problem. Another, frequent use for
- these constants is as representation of the base addresses and offset values
- for accessing memory in order to retrieve constants and variable values which
- represent the model proper.
-
- Although we have not yet considered what may actually be necessary in order to
- construct a program of instructions for solving a problem, we can now determine
- some important properties of any program, no matter what the representation.
-
- It should be clear that, whatever else a program is, it can only ultimately be
- represented as a set of objects, each with any required internal structure, all
- these objects being ultimately represented by a collection of single values.
-
- This means that for any purposes, we can treat a program as an entity which can
- itself be modelled in the same way that we build models of the real world. The
- reason that this is so important is that it enables a program to be stored in
- the same type of memory unit that we use to store model values. This means a
- potential to build programs which take other programs as their data, using them
- as models which can then be manipulated into forms and interpretations more
- appropriate for solving certain proglems. As an example of this type of model
- manipulation, where the model is really a program, consider the translator for
- a programming language.
-
-
-
-
- 3.18 The simplest operations for computation
- ==== =======================================
-
-
- We will now look in some detail at the types of simplest operations necessary
- to support meaningful computation. These operations will have the capability
- to process information by manipulating the basic information representations
- that we use for modelling.
-
- Using these manipulations, it is possible to make new interpretations of any
- particular model, or indeed any particular aspect of a given model. The new
- interpretations are themselves models, but with a different information content
- which may be either more specialised or more generalised than the source model
- information. In any event, it will be easier to obtain the answers to certain
- questions when using the new model as compared with the original model. This
- fact provides the motivation for the creation and derivation of new models from
- existing, but somehow deficient models, assuming a particular purpose has been
- specified.
-
- It is necessary to provide a model with new values from outside the model. The
- need for this is satisfied by an instruction which performs an input operation,
- using the input unit described above.
-
- In similar manner, an output instruction is made available, so that the output
- unit may be commanded to deliver a new value to the computational environment.
-
- We have already considered that store and load instructions are needed in order
- to provide the memory unit with a means to function.
-
- The processing of data requires a number of different instructions. It must be
- possible to introduce a new constant value into a computation. Any given value
- lies next to two nearest neighbouring values in the value space of which it is
- a member. Each of these nearest values must be easily and directly computable,
- so that the notion of closeness may be directly used in modelling. This can be
- particularly important for the programmed manipulation of addresses, and in any
- situation where counting is needed. It should be possible to determine the
- distance between two values; given a value and a difference, the value giving
- the difference should be obtainable. These operations correspond with addition
- and subtraction.
-
- Finally, it should be possible to control the proress of the computation. This
- means being able to take decisions dependant upon the values present from time
- to time in the model. In this way, the immediate progress of a computation may
- be conditional upon situations detected in earlier parts of the computation.
-
-
-
-
- 3.s Summary
- === =======
-
-
- We have examined the operation of a computer system in order to find out what
- it is that a computer actually does. We have seen that computation can most
- usefully be thought of as a modelling activity. The motivation for modelling
- is always as a means by which solutions can be found for what would otherwise
- be difficult or impossible problems.
-
- We have seen that there are essentially two types of models, and that the first
- type is usually implicitly present in the second. We have examined attributes
- and their values, and means for combining attributes together to form objects.
-
- The properties of values and their associated value spaces were described. The
- importance of the underlying structure of a value space was emphasised since it
- is fundamentally important for supporting computation.
-
- Memory units are seen to be the essential modelling vehicle for permitting the
- simple expression of both constants and variables. The concept of an address
- value was introduced, with the consequent implications for representation of
- programs and the modelling of objects.
-
- We have seen that a program is itself a real world reality which may therefore
- be modelled. The resulting interesting properties of programs were described.
-
- Finally, we examined the types of instruction which might be important for the
- exppression of a program. This concludes our overview of computation.
-
-
-
-
- 4. Visual modelling
- == ================
-
-
- 4.01 Complexity control and abstraction
- ==== ==================================
-
-
- In any modelling activity, there will be layers of structures built one upon
- the next. This is an important feature of modelling, since it implies that
- certain details associated with a given object will be hidden from view as a
- consequence of their presence within component objects of that object. This
- has the pleasant effect of enabling the component object properties to be
- assumed present by abstraction, at the level of the given object. In this way,
- a complex model may be built up by combining simple component objects, or could
- equally easily be built from the top down by assuming abstract properties for
- needed components.
-
- This proliferation of complexity within useful models does present certain
- problems. For example, there may be many possible ways of interpreting any
- particular properties of a model. This means that the ways we look at the
- models we create must be flexible enough to accomodate the essential whilst
- ommitting all unimportant detail.
-
- Historically, when dealing with purely numeric models involving formulae which
- relate different variable values together, it has been very useful for the good
- understanding of such a model, to present graphs showing how under some assumed
- constraints, two or more variables change with respect to each other.
-
- It is easy to see that by visual means, a complex situation can be described
- satisfactorily in terms of a two dimensional graph. Sometimes, where an extra
- dimension of change is involved, for example time, a sequence of graphs may be
- the ideal representation. Electronic engineers have embodied these principles
- in devices such as the oscilloscope and logic analyser.
-
-
-
-
- 4.02 Human interaction with a computer system
- ==== ========================================
-
-
- There are some special types of modelling situation where a drawing may include
- multiple layers, each of which correspond to a level of design abstraction. As
- an example of this type of modelling system, one can consider the hierarchical
- design systems with which silicon integrated circuits are designed. In these
- types of systems, much detail must be represented in a physically small screen
- viewing area. In addition, it must be possible to quickly change the scale at
- which a design is presented, so that fine detail is clearly visible and more
- importantly, manipulable. This is an example of a direct visual model used to
- represent a device which does not (yet) have any existance in the real world.
-
- Typically, the user creating a drawing needs to be able to observe the existing
- state of the drawing, and then must be able to select a portion of the drawing
- and manipulate it. It is necessary to be able to create new detail and to move
- existing detail in the drawing. For these types of operations which involve a
- very precise spatial input from the user, as observed on the displayed image,
- the mouse input device has proven very useful. As an alternative to the mouse
- device, a graphics tablet is also a powerful pointing device, with high useful
- resolution and good positional accuracy. Both these types of pointing device
- provide for great sensitivity in pointing to a drawing feature, and therefore
- enable modifications to be affected with ease. The graphics tablet has a great
- advantage over the mouse when input from an existing drawing is required. The
- tablet has excellent positional accuracy and repeatability, so can be readily
- used to digitise an existing drawing into a computer system. A mouse cannot
- operate in this way, as it is a relative motion device with no capability for
- absolute positional input.
-
-
-
-
- 4.03 Display quality issues
- ==== ======================
-
-
- Usually, where a large amount of relevant detail must be shown on a drawing, it
- it useful to inhibit the display of some detail, only enabling it to appear on
- request. In this respect, different colours used to highlight the significance
- of important details can be advantageous in reducing any ambiguity in a crowded
- drawing. The number of possible colours available for display depends upon the
- image generator and the display unit quality. The image generator may generate
- analogue signals with considerable colour information available, but unless the
- display unit can accept this full colour bandwidth, the display colour palette
- will remain limited. This may result in some colours appearing to be identical
- with each other, even though they are supposed to be different.
-
- The ultimate capability of a displayed image is expressed in terms of the pixel
- count in each screen dimension. This depends on the image generation hardware
- and the display unit. The highest displayed spatial frequencies are limited by
- the bandwidth of the output signal from the image generator and by the response
- to that signal by the display unit. In addition, there may be a physical limit
- on image spatial resolution due to a shadow mask associated with the display.
-
- When a view is changed by expanding the level of detail, or perhaps by changing
- the scale at which it is displayed, it is important that the new image appear
- without undue delay. This is important to ensure continuity of concentration
- for the person manipulating the design. There is usually a trade-off between
- the speed of update of an image and the level of detail actually displayed. If
- there is a great deal of image information, in general, update speeds will not
- be as great as for a lower resolution image display.
-
- In order to provide a display space which can be readily programmed to provide
- high quality images within a range of different modelling requirements, it is
- very important that the aspect ratio of individual display pixels be either
- exactly 1:1 or very close indeed to this ideal ratio. If aspect ratios other
- than 1:1 are employed, it can be very difficult to obtain good visual results
- when modelling fine detail, especially where curves must be presented. In the
- case of a circle, an aspect ratio of 1:2 will produce an effect not unlike that
- of a broad nib fountain pen. That is, the near vertical portions of the circle
- will appear razor thin, whilst the near horizontals appear thick and blocklike.
-
- The screen image must be absolutely rock steady, since any instability over a
- prolonged period of time would be absolutely intolerable for someone engaged in
- serious work. This means that high quality design must be a prerequisite for
- both the image generation hardware and the image display hardware. In addition
- the production and test procedures employed by the manufacturer have a vital
- role to play in the production of a displayed image which is a pleasure to use.
-
-
-
-
- 4.04 Context representation
- ==== ======================
-
-
- It is usually the case that when a change is contemplated to a visual model, it
- must be considered in terms of at least two distinct views. Often, it will be
- necessary to consider many more than this number of separate views. To see why
- this is so, consider the common situation where a connection must be made from
- one point on an image to a second, distinct point. There are immediately two
- regions of interest within the image. If the displayed image is an uppermost
- viewing level, then it may be prudent to take an enlargement about each of the
- two points to be connected. This means there will be three separate views of
- the same image.
-
- Practical considerations may mean that considerably more views are needed in
- the performance of a particular manipulation. Normally however, these views
- are not needed concurrently. As the manipulation proceeds (perhaps connecting
- a line between points at different levels in a design hierarchy) the context
- changes, so a previously necessary view can be relinquished, whilst a new view
- is originated. In this way, the visual presentation of the design is extremely
- dynamic. This need for multiple views can have an important impact on the way
- a visual interface is designed to operate. It must be easy and time efficient
- to create and change multiple views into a design database. One consequence of
- displaying multiple views is the need to be able to place pairs of views one
- upon another. That is, it must be possible to choose the portion of one view
- which is for the moment covered by a second view. The implication is that any
- view must be freely moveable within the display area. In addition, it must be
- possible to change the overlap order of views so that the obscured portions of
- each view are exactly those parts that are visually unimportant.
-
-
-
-
- 4.05 Building blocks of a visual modelling scheme
- ==== ============================================
-
-
- The building blocks of a visual modelling scheme are separable into two parts,
- the visual context component, and the visual object component.
-
- Visual context is concerned with the spaces available within a display screen
- for presentation of a visual image which is bound to one aspect of the model
- concerned. When the visual context is changed, the displayed images change as
- a consequence of overlap or of hiding, but the information which is visible in
- any given context remains unchanged. Visual context is concerned with the way
- the display area of a screen is arranged so as to provide the maximum amount
- of immediately visible, relevant information.
-
- Within the display area associated with a given visual context, visual objects
- will be made available for display. {If any area of a context is not visible,
- this will be as a consequence of the overlap of a number of contexts, with the
- result that some are subjected to partial or complete hiding.} These objects
- will themselves be of two principle forms. Geometric shapes comprise the main
- element of visual modelling schemes, with text providing essential additional
- information.
-
- Geometric elements are provided for all the main families of geometric shape
- which are likely to occur in real world objects. Such shape families include
- the square, the rectangle, the circle, the ellipse and the triangle. Lines
- are available for purposes of connecting any two points.
-
- Text may be provided in various sizes, to suit the hierarchical level at which
- the text associates with a design. For example, in a silicon chip design, the
- top level functional blocks will often employ large text with which to express
- their names. Details of interface lines between functional blocks will employ
- a much smaller text, to emphasise the difference in overall importance of these
- component parts.
-
- In practise, there can be problems of representation for curves in any context
- where an essentially rectilinear coordinate system is used, as is the case for
- raster display systems. The difficulty arises where line segment gradients
- occur at angles antagonistic to accurate representation in a rectilinear system
- of coordinates. This happens at shallow angles to each major axis, and at the
- angles which lie about one quarter of a right angle from the major axes. These
- critical angles result in jagged line segments, which are most disconcerting to
- the eye. There are means available to reduce problems of this nature, by using
- an anti-aliasing technique. This technique applies a small modification to the
- displayed image by modifying the luminosity of pixels on or near the line being
- processed. The result deceives the eye into believing that a smooth gradient
- is actually being displayed. Under these conditions, the visual interpretation
- becomes very close to the ideal shallow angle line segment. However, to make
- appropriate image adjustments is an extremely computationally intensive task.
-
-
-
-
- 4.s Summary
- ==== =======
-
-
- An introduction to visual modelling has been presented, showing the motivation
- and historical background which preceeded computer based imaging systems.
-
- The visual consequences of modelling with hierarchy are examined with a view to
- understanding the design issues which must be addressed in ensuring that the
- display system is capable of practical use in solving real problems. Devices
- available for closing the visual feedback loop by providing graphical input are
- examined in terms of their comparative properties.
-
- Some of the more important technical issues affecting displayed image quality
- are reviewed. This gives insight into motivations at work during the technical
- design of a real display system.
-
- The notion of visual context is introduced, with a discussion of the necessary
- supporting manipulations required to enable control of visual context during
- practical interaction with a visual modelling system.
-
- Finally, the building blocks needed in order to construct a visual modelling
- scheme are examined. A discussion of some of the difficulties relating to use
- of a rectilinear coordinate system in the representation of curves includes
- mention of a technique for atonement of the problem.
-
-
-
-
- 5. Display device characteristics
- == ==============================
-
-
- 5.01 Raster scan display systems
- ==== ===========================
-
-
- There are a number of possible technologies used for producing high quality
- visual images from computer produced data. We are concerned with only one of
- these technologies, raster scan display technology. We will not mention any
- of the other available systems, since we are concerned with video graphics
- array controller chip programming, which implies using a raster scan display.
-
- A raster scan display system is very simple in concept. The generated visual
- image is considered to be composed of a large number of lines of visual data,
- with the orientation of each line being essentially horizontal. One line is
- displayed after another, so that successive lines are stacked vertically one
- upon another, with minimal vertical separation. In this way, a rectangular
- image space is built up. In order for this to work, the computer system must
- provide data suitable for describing the visual content of each neighbouring
- line, one after another, until each line has been described and the image is
- complete.
-
- We can think of a line as being composed of many individual picture elements,
- each of which represent in some way, the smallest amount of information that it
- is possible for a display to present. A picture element is usually referred to
- as a pixel, which is essentially a contraction of picture element, following
- the fashion for contracting pictures to pics (or pix) and picture to pic.
-
- A pixel has a number of useful properties. It is entirely separate from any
- other pixel, which means that any characteristics it possesses can be changed
- independantly of the characteristics of any other pixel. In this manner, we
- can determine the resolving power of a display by means of a statement of how
- many pixels the display can support during operation. This is termed the
- resolution of the display. However, visual images are generated outside the
- display itself, so the resolution of the image generator must be taken into
- account when deciding the achievable resolution for the entire visual system.
-
- The important physical properties of a pixel are those of size, aspect ratio
- and colour capability. A small pixel will pack more tightly into a given line
- length therefore giving greater resolution for the presented image. The aspect
- ratio should ideally be 1:1 as noted above. This gives best results using a
- rectilinear coordinate system. The colour capability of a pixel is expressed
- as hue and luminosity. Hue describes the mixture of the primary colours used
- to generate a displayed colour, whilst luminosity is a measure of the strength
- of the colour.
-
-
-
-
- 5.02 Raster scan image refresh
- ==== =========================
-
-
- A pixel can be given exactly the properties required by means of descriptive
- data sent to a display unit from a computer system. However, a display unit
- does not itself possess any memory for the characteristics given to a pixel in
- this way. That is, the display system can display a pixel according to data
- describing that pixel, but that data is not remembered anywhere in the display
- unit. The effect is that a single image can be produced, which then starts to
- fade away, until it becomes quite invisible.
-
- Therefore, when building an image using a raster scan display system, we have
- only to present the display device with an endless stream of data, composed of
- the information we need to completely describe the characteristics of each and
- every pixel, on a moment by moment basis. The need to supply data to a display
- on a continuous basis, arises because the display can only present a displayed
- image for a small time before the image begins to fade. However, if we make
- the display data continuous, the image produced will not have time to begin to
- fade, so will remain strong. The fade time of an image determines the delay
- before the image must be refreshed, this time decided by the chemicals used in
- making the phosphor in the cathode ray tube. {In fact, there is a short term
- memory in a display unit, which is the result of a phosphor taking some time to
- forget the information represented by the radiation of coloured light at some
- particular intensity. This short time permits the serial presentation of data
- into a display device to result in a complete image over the entire screen.}
-
- {Note: not all raster display systems use a cathode ray tube with its attendant
- phosphor fade. This was for many years the dominant technology, and is still
- the principle display tchnology used today. Other raster display technologies
- use exactly the the same signals as would a cathode ray tube system, but do not
- suffer from phosphor fade. We mention the above simply to give an insight into
- the original design motivation behind repeated data presentation into a raster
- scan display device. There are other consequences of the original technology
- which will become apparent in later discussions. Most of the timing issues in
- raster scan image generation relate to the original technology.}
-
-
-
-
- 5.03 Signals for image generation
- ==== ============================
-
-
- The sequential generation of an image requires that individual lines of visual
- data be sent to a display device, one after another, until an entire image has
- been constructed. The whole process is then repeated indefinately. The data
- which represents the individual characteristics of each pixel must therefore be
- synchronised in some way with the operation of the display device. This must
- be done in order to ensure that the data for each pixel actually changes the
- same physical pixel on the screen, each time it is sent to the display unit.
-
- The display unit operates to an extent without any knowledge of the data being
- sent to it from the image generator. Once an image has started, the display
- alters each pixel in a display line simply by converting the colour information
- arriving from the image generator into light of specified hue and luminosity.
-
- The physical process used by the display unit involves scanning three separate
- electron beams at a known and absolutely constant velocity across the pixels
- making up the line to be displayed. The colour information from the image
- generator is used to change the intensity of each of the three electron beams.
- The strength of an electron beam striking a phosphor determines the intensity
- of the light emitted by the phosphor. By making each pixel from three dots of
- different coloured phosphors, and arranging that each electron beam focuses on
- phosphor of a known colour, it is possible to completely control the colour at
- each pixel position of the display.
-
- The image generator has a way of telling the display unit that a complete new
- image is about to be transmitted, and also a way of informing the display unit
- that a new line of visual information is about to be sent. Apart from these
- two synchronisation signals, the displayed image positional stability depends
- completely on the ability of the two units to maintain very accurate matched
- timing in their operations. The display scans each pixel in a line at a known
- rate, so the image generator must supply pixel colour information at exactly
- this same rate. In this way, so long as the timing stays the same during the
- period required to display one line, the image will be positionally stable.
-
- The signals describing pixel characteristics provided by the image generator
- represent intensities which are used by the display unit to modulate light from
- each of the three phosphors which make up one complete display pixel. These
- phosphors generate the colours red, green and blue. Using the emmision colour
- mixing model, it is possible to represent any desired hue and luminance by
- changing the absolute intensity value of each of these component colours. In
- this way an entire colour image is formed on the display screen.
-
-
-
-
- 5.04 Timing issues
- ==== =============
-
-
- For practical generation of display image information suitable for presentation
- into a raster scan display device, there must be provision for synchronisation
- signals. We will now examine some of the important timing characteristics of
- these synchronisation signals by looking at the display unit operation in some
- detail. We will, as before, assume a cathode ray tube based display unit.
-
- The most important aspect of timing information in a raster scan display based
- on a cathode ray tube, is concerned with the finite energy required to move the
- electron beams across the surface of the display tube. This energy is used to
- create a varying magnetic field, which permeates the display tube and results
- in the deflection of the electrons passing through it. This is the essential
- mechanism by means of which the pixels in a display line are scanned. However,
- there are some important consequences of this use of a magnetic field and they
- affect the timing signals presented by the image generator to the display unit.
-
- The magnetic field which sweeps the beams of electrons across the display tube
- is a strong magnetic field. This means it possesses a large amount of energy.
- That energy reaches a maximum at the extreme positions of a scan line. So at
- the start of a scan line the magnetic energy is at a maximum in one direction,
- whilst at the end of a scan line the energy is a maximum in the very opposite
- direction. The implication is that between the extreme right position on one
- scan line and the extreme left position of the following scan line, a large
- amount of energy must be safely transferred. This cannot happen without some
- time being made available specially for the purpose.
-
- Each time the display line is advanced from the top of the display tube towards
- the bottom, a similar argument applies. A magnetic field possessing energy is
- used to direct the electron beams at right angles to those used for the pixel
- scan along each line. But the energy argument is just as valid in the vertical
- direction. Therefore in order to finish the last display line in the image it
- is necessary to provide a time delay so that the magnetic field can be set up
- ready for the first line in the display. As before, considerable energy must
- be transferred, which accounts for this requirement.
-
- During the flyback period, which can be either line flyback or frame flyback,
- the electron beams would normally re-traverse the screen, which would cause
- difficulties with image interference. This would be the result of any double
- exposure of pixels to the electron beams. In order to prevent this possibility
- all the electron beams are inhibited during a flyback period. This is termed
- line blanking and frame blanking respectively.
-
- The circuitry which controls the horizontal and vertical scanning uses a method
- of improving the absolute positional accuracy of the electron beam deflection
- called overscanning. An overscan is the result of applying too much deflection
- to the electron beams to the extent that they no longer strike the surface of
- the screen. Instead, they strike an interior portion of the display tube, and
- do not generate any image as a consequence. A difficulty arises when the beams
- start to strike the display screen resulting in image generation. The result
- is an image which appears ragged, since the boundary between the non-displaying
- and displaying part of the screen may not be well defined. In addition, there
- is the need to establish unambiguous synchronisation between the display unit
- and the image generator. This cannot be readily achieved by using the edge of
- the screen as a guide to determining where each scan line should commence.
-
- To combat this problem, horizontal blanking is used to switch off the electron
- beams at the start and end of each horizontal scan line. In this way some part
- of the display screen remains unused, but the result is a much more stable and
- accurately positioned display. The horizontal synchronisation signal is used
- to specify the exact timing characteristics of this special blanking. It can
- usefully be thought of as an extension of the line blanking due to flyback.
-
- There is an identical extension to the vertical synchronisation signal for the
- same reasons.
-
-
-
-
- 5.05 Image generation can be dangerous!
- ==== ==================================
-
-
- The timing of the horizontal and vertical synchronisation signals is determined
- completely by the image generator, but although this is so, these signals must
- be interpreted correctly by the display unit if the intended image is ever to
- be produced. This means that there is potential for an image generator to send
- visual signal information to a display unit, which that display unit cannot use
- to produce an image.
-
- It is important to see why this may be so, since if such signals are sent to a
- display unit, one possible consequence is that permanent damage to the display
- may result. Obviously this situation is extremely undesirable, and likely to
- be very costly if it does occur. This is one of the rare situations where the
- incorrect use of software can result in destruction of hardware. {We refer to
- industry standard systems only in making this remark. There are large classes
- of systems termed embedded systems where the coupling between hardware and the
- software which controls it is so close, that this potential for destruction is
- ever present. Such systems are only programmed by experts as a result.}
-
- A display unit has the important characteristic that it will correctly accept
- synchronisation and image generation signals upto a certain maximum frequency.
- This means that in a given time, only a certain quantity of information may be
- accepted by the display unit from the image generator unit. If this maximum
- frequency is exceeded, the circuitry within the display unit will not function
- correctly and may be damaged as a result. This can happen because the quantity
- of energy used in controlling the electron beam scanning is very high, making
- it essential that electronic devices capable of withstanding high stress are
- used in the circuitry. Moreover, to improve display device reliability, energy
- conservation circuits are introduced into the display unit. This measure means
- that the display circuits dissipate less heat and therefore operate at a lower
- temperature than would otherwise be the case. However, in order to for these
- circuits to operate correctly, certain important assumptions must be made about
- the frequency of operation. This is in essence why it is possible to damage a
- display device by feeding it with image information at too high a frequency.
-
-
-
-
- 5.06 Persistance in human vision
- ==== ===========================
-
-
- The frequency of the image information presented to a display unit determines
- the maximum image resolution of the resulting display, assuming an acceptable
- match exists between the image generator and the display unit. That is, the
- greater the number of pixels to be displayed, the more information is required
- for each single image displayed. We term each of these images a frame. More
- information in a given amount of time results in a higher frequency. We would
- like to keep the image information frequency as low as possible, since this
- helps to keep the display system quality high and the cost low. This can only
- be done by making a compromise. We will now examine how this can be achieved.
-
- We have seen above how it becomes necessary to repeat each frame at such a rate
- that the resulting display image becomes constant. We have seen how this can
- be determined by the image persistance of the phosphors representing a pixel.
- There is another important aspect of image persistance which we have not yet
- considered. The human eye itself has properties of image persistance. So it
- is possible for a human eye to provide an image for some time after the image
- has vanished. This is the important property which gives projected cinema film
- the realism which makes cinema films possible. In projecting a cinema film, a
- single image is flashed onto the screen for a fraction of a second, then the
- light illuminating the image is removed, the image is then replaced by the next
- in sequence. This whole process repeats many times per second. Persistence of
- vision is the means by which the cinema screen seems to give a steady portrayal
- of stationary scenes and smooth representation of movement.
-
- This same persistance is at least partly responsible for our ability to see the
- image presented by a display unit as a single continuous image. We know that a
- phosphor also exibits persistance. An interesting question therefore arises.
- How many frames per second must we display in order to minimise the information
- sent to a display unit, whilst still maintaining an acceptable displayed image?
-
- This question is absolutely vital in determining the highest frequency that a
- display unit must operate at, given a particular image resolution. This whole
- issue determines the cost of the display unit and the quality of the displayed
- image. It therefore also determines the characteristics of the image generator
- which must produce the information for creating the image. So it is a really
- pivotal question for a visual display system.
-
- A cinema projector usually operates at 24 frames per second, and at this frame
- frequency a high quality image is perceived. At lower frame frequencies, there
- may be image flicker, which after some time can become very unpleasant. It is
- important to eliminate flicker so that a display system image can if necessary,
- be observed for prolonged periods of time without creating undue stress.
-
- A display unit frame is not directly comparable with a cinema film frame. This
- is so because a display unit produces an image by using scanned electron beams,
- whilst the cinema film frame is a complete image in its own right. This means
- that in order to give the same freedom from perceived flicker, a display unit
- must produce more frames per second than does a cinema projector. In practise
- a display unit will usually attempt to operate at a frame frequency of at least
- 40 frames per second. Some display units operate at over 90 frames per second,
- which results in an extremely stable, high quality image. Of course, to run at
- the higher frame rate means much more image information must be generated, so
- the complete cost of the display system will be very much higher than a system
- which uses a low frame rate.
-
-
-
-
- 5.07 Interlaced display
- ==== ==================
-
-
- It is important to keep the frame rate of a display system as high as possible
- in order to produce a good quality image which remains flicker free. At the
- same time, we wish to keep the information frequency as low as possible so as
- to minimise the cost of the display system. We will now examine an interesting
- compromise which attempts to obtain the best of both situations by using what
- really amounts to a clever visual trick. This trick just happens to be simple
- to implement using raster scan display technology, hence is of practical merit
- in some types of display systems.
-
- The trick is based on the observation that apparent flicker can be reduced when
- two almost identical images are displayed one after another, but in a special
- physical relationship with each other on the display screen. All single images
- are composed of a certain number of raster scan lines. It is possible to take
- a single image and make two separate images from it, by taking alternate scan
- lines from the full image. This places all even numbered scan lines in one of
- the derived images, with all the odd numbered scan lines making up the second
- image. These derived images are then each composed of approximately half the
- number of scan lines appearing in the original image. In this way each derived
- image is represented by approximately half the visual information needed in the
- original image frame. {We say approximately half, since we did not specify the
- number of scan lines in the original image, which may not be divisible into two
- identical parts.}
-
- We can then display these two derived image frames alternately, which means the
- visual information frequency is roughly halved, whilst the frame rate remains
- constant. Alternatively, the visual informatin frequency can remain constant,
- whilst the frame rate is doubled. To do this, the display unit interlaces the
- two images, which means that physically, on the screen, the original image is
- reconstituted exactly as it was prior to being dismembered. Obviously in order
- for this to work, the display unit positional error must be very low. However,
- this is a requirement of any display system, so does not present tremendous
- difficulty. In this way, flicker is reduced, whilst a reasonable quality image
- is produced by the display system. As a result the apparent display resolution
- can be increased by a factor of two, without too much increase to the cost.
-
- For the very highest quality display presentation, it is better not to use this
- technique, since the ability of the display unit to correctly reconstitute the
- image will leave something to be desired. However in some situations interlace
- can be useful.
-
-
-
-
- 5.08 Screen border display
- ==== =====================
-
-
- It may prove useful to display an image which is substantially smaller than the
- resolution of the display unit being used. This might be the case where some
- software assumes such a smaller image area when creating a visual image. So it
- can be displayed on the higher resolution display system, some of the pixels on
- the display must be effectively removed from the true image area. In this way,
- the actual image display will appear smaller than the true available image area
- on the display screen.
-
- A convenient way to manage this reduction in display image size, is to create a
- border surrounding the true active display area. In this way, those pixels not
- required in the image are set to some predetermined colour, which is termed the
- border colour. We mention this possibility since later, we will see that this
- capability is supported by a video graphics array controller chip.
-
-
-
-
- 5.09 Cursor generation
- ==== =================
-
-
- An image display system is an output component in a feedback loop incorporating
- the computer system and the person using that system. Within a displayed image
- there is one point with which the user is presently concerned. This point will
- be subject to any manipulation deemed necessary by the user. As the resolution
- of the display system increases, the quantity of visual data becomes large, so
- the user requires a means of determining where the active point is situated.
-
- The movement of an input device can be related to a cursor which specifies the
- exact position of the hot spot within the image. This cursor will be easy to
- distinguish from the image proper, and for this purpose will normally blink on
- and off at a rate designed to be easily seen amongst a mass of visual detail.
-
- Since the generation of a blinking cursor by software is a very high overhead
- operation, it is beneficial for the image generation hardware to provide some
- facilities for cursor generation and positional control.
-
-
-
-
- 5.10 Multi-synch monitors
- ==== ====================
-
-
- There is some advantage in designing a display unit (also termed a monitor, or
- sometimes video monitor) so that it will accept image information at different
- frequencies. The advantage is that the full display area is used, rather than
- producing a small image with an unused border as discussed above. The display
- accepts lower frequencies of image information and, as a direct consequence of
- this, the apparent physical width of a pixel changes. The result is a reduced
- resolution display, but one which takes up the full display area.
-
- For this concept to work, there are certain frequencies assumed to be in use by
- the display system, so that signals from the image generator can be analysed to
- determine their timing properties, and hence determine the correct operation of
- the display unit. Since the signals which give image timing are synchronising
- signals, the name of such devices is multi-synch monitors. At any moment, only
- one of the possible display unit operating frequencies is matched by the timing
- of the horizontal and vertical synchronising signals. If this timing should be
- changed, then the monitor adopts the new frequency after a short period. For a
- short time during the change over period, the image produced by the monitor may
- be dimensionally and visually unstable. This is quite normal with commercially
- available multi-synch monitors. However, this should not be surprising, as the
- operation of the monitor is affected so fundamentally by the change from one
- input frequency to another.
-
-
-
-
- 5.s Summary
- ==== =======
-
-
- The concepts associated with raster scan display systems are introduced with
- the special emphasis on the use of cathode ray tubes for the display unit of
- such systems.
-
- The pixel is identified as the fundamental unit for image presentation and also
- display image resolution. Properties of pixels are explored.
-
- The properties of a cathode ray tube based display unit are seen to embrace the
- need for image refresh. This is seen to be a consequence of the absence of any
- image data memory in a display unit.
-
- The need for synchronisation between an image generator and a display unit is
- identified and related to the physical processes employed by the display unit
- for image presentation. The concept of multi-phosphor pixels is introduced,
- with consequences for the data encoding of colour information.
-
- The need for periods of inactivity between the display of neighbouring scan
- lines is outlined in terms of flyback energy, with similar requirements for
- the frame flyback period. The use of special linearising circuitry for both
- line scanning and frame scanning is seen to have important implications for
- the horizontal and vertical synchronisation signals respectively.
-
- The properties of display units which make them suceptible to damage by image
- generators are carefully examined.
-
- Consequences for display system design deriving from human visual persistance
- are examined. These are seen to be of seminal importance.
-
- The interlace technique is seen as a trade off between ultimate image quality
- and image information frequency, with implications for display system cost.
-
- The use of a border area is examined as a means for using low resolution images
- with a high resolution display unit.
-
- The advantage of an image generator supported cursor is reviewed.
-
- Multi-synch monitor are described in relation to their frequency agility with
- implications for display of images at a lower resolution than that supported
- naturally by the display device.
-
-
-
-
- 6. Trident 8900 VGA controller: Computer interface
- == ===============================================
-
-
- 6.01 Memory interface
- ==== ================
-
-
- The video graphics array controller must repeatedly transmit image information
- to the display device. Since the display device does not possess an image data
- memory, that memory must be provided by the image generator. Image generation
- is intimately managed by the controller chip, so the image memory can only be
- accessed through the controller chip. In this way, we do not have to concern
- ourselves with the complicated hardware details of memory access, as the memory
- interface provided by the controller chip suffices. This interface will now
- be given in broad outline, but important details will be omitted for clarity.
-
- The Intel 80x86 processor family uses a segmented memory architecture. In the
- original 8086 processor, for which most current software is targetted, the size
- of a segment is limited to a maximum of length of 64 kilo-bytes. This quantity
- of memory is therefore immediately accessible without the need for changes to a
- segment register value. For this reason, the memory access interface provided
- by the VGA controller requires that the processor generate addresses inside the
- 64 kilo-byte span of a segment. The motivation is speed of image access.
-
- The image generator typically controls much more memory than 64 kilo-bytes, so
- that high resolution colour images can be generated. A usual configuration at
- the time of writing would be 1024 kilo-bytes of image memory. Clearly, so that
- the processor be able to read and write such a large image memory using only 64
- kilo-bytes of addressing, some type of access extension mechanism is needed.
-
- We can think of the 64K {shorthand: 64 kilo-bytes} addressing range recognised
- by the VGA controller as being a window into the much larger image memory. If
- the controller is reappraised of the alignment of this window within the entire
- image memory range, it is possible to read and write to the full image memory.
-
- Of course, for this scheme to work, we would periodically have to send special
- information to the controller chip, which adjusts the positioning of the memory
- window, so gaining access to memory outside the 64K furnished by the currently
- defined window.
-
- In order to specify where within the full image memory span the current access
- window will be situated, the concept of a page is introduced. A page contains
- two segments, each of which is 64K. So a page represents a memory unit of 128K
- bytes of image memory. Further, two pages combine to form a bank with 256K of
- image memory. Finally, one of four possible banks can be selected, giving full
- access to one megabyte of image memory. It is important to note that the image
- memory is only accessible via the VGA controller chip. It is not possible to
- directly access this memory from the processor, except insofar that the memory
- interface provided by the VGA controller permits. This is equivalent to saying
- that any read or write access to the 64K window provided by the VGA controller
- has an effect in video memory determined by a pre-established context which has
- to be explicitly programmed for the purpose at hand. The memory interface must
- be managed by the programmer, so nothing can be taken for granted.
-
- In fact, there are a number of complications with this scheme, which we should
- expect in a subsystem as powerful as the VGA controller. This means that later
- we will encounter additional VGA controller capabilities which affect the image
- memory addresses which are generated by the processor.
-
-
-
-
- 6.02 Input, output, port interface
- ==== =============================
-
-
- The VGA controller is a collection of mutually supporting logic blocks, which
- interact to produce the full functionality required of the controller. Each of
- the individual logic blocks can sometimes be conveniently programmed as though
- it were completely isolated from all the remaining blocks, although that is not
- always the case. For reasons related to ease of chip design, each block has an
- interface provided which gives input output port access to a set of internal
- control registers. These registers determine the detailed operation for each
- logic block so can be used to give fine control of image generation as required
- in a sophisticated image display system.
-
- The access to large numbers of internal programmable registers by a processor
- provides a problem for the hardware designer. The idea is to provide as much
- functionality as possible, without using too many hardware resources providing
- access to the large number of programmable registers needed for control.
-
- To ease this hardware design problem, which is effectively an attempt to reduce
- the device complexity and cost from the hardware point of view, a trade-off is
- made with respect to ease of programmability. This trade-off is the reason why
- VGA controller chips are a little strange to program. {People who think every
- means possible should be employed to make every device easier to program should
- reflect that even with contemporary technology, adherance to this philosophy is
- not economically possible, from the hardware design and development viewpoint
- and also because of manufacturing and marketing considerations. The truth of
- this is especially visible where commodity market chips are concerned.}
-
- We now see the typical input output port interface provided to give access to
- the programmable registers within one logic block of the VGA controller chip.
- Each interface uses just two input output port addresses. This simplifies the
- decoder logic overhead within the logic block.
-
- If the logic block we are going to program is the Sequencer, the two ports we
- will access lie at the following addresses:
-
- 1. Sequencer Address Register { Port 3c4 hex for Read, Write }
- 2. Sequencer access port { Port 3c5 hex for Read, Write }
-
- The correct programming sequence for accessing an internal register depends on
- each of the registers being associated with an index number. Programmers can
- think of the internal registers being arranged in an array for which an index
- must be provided in order to obtain access to an individual register. Once the
- index number for the register of interest is known, that index number is output
- to the Sequencer Address Register. The sequencer will then set itself up so an
- access to the Sequencer access port actually performs input or output to the
- required internal sequencer programmable register.
-
- A code fragment to perform a write to the Character Map Select Register within
- the sequencer, and then to read that value back is given below.
-
-
- ; start example 1
-
- ; Set up Sequencer Address Register ...
- ; ... for access to Character Map Select Register
-
- mov dx,3c4h ; Sequencer Address Register port
- mov al,03h ; Character Map Select Register index
- out dx,al ; select the Character Map Select Register
-
- ; Write the Character Map Select Register
-
- mov dx,3c5h ; Sequencer access port
- mov al,write_data ; collect the data to write
- out dx,al ; write the Character Map Select Register
-
- ; Read the Character Map Select Register
-
- mov dx,3c5h ; Sequencer access port
- in al,dx ; read the Character Map Select Register
-
- ; end example 1
-
-
- Whilst this example does not appear to be particularly onerous, we will see in
- later examples that the number of registers which must be programmed in concert
- may lead to long sequences of code which do nothing else but select and access
- VGA controller registers, prior to actually performing image manipulation. It
- would be misleading to pretend that the writing of such sequences is anything
- other than tedious; however, if excellent results (or indeed any results!) are
- to be had, we must face this prospect.
-
- There is a fortunate aspect of the Intel 80x86 input output port architecture
- which can help to ease the programming burden associated with VGA registers.
- When a word output is performed to a particular port number, two bytes are in
- fact transferred. The first is sent to the port mentioned and the second is
- sent to that port number plus one. This has the happy consequence that it is
- possible using word output, to effect the index selection with the first port,
- followed by data output to the just selected register. This can help to ease
- the amount of code to be written, and is of course much faster to execute.
-
-
- ; start example 2
-
- ; Set up Sequencer Address Register ...
- ; ... for access to Character Map Select Register
-
- mov dx,3c4h ; Sequencer Address Register port
- mov al,03h ; Character Map Select Register index
-
- ; Write the Character Map Select Register
-
- mov ah,write_data ; collect the data to write
- out dx,ax ; write the Character Map Select Register
-
- ; Read the Character Map Select Register
-
- mov dx,3c5h ; Sequencer access port
- in al,dx ; read the Character Map Select Register
-
- ; end example 2
-
-
- In this way, it is possible to omit one output port instruction and one address
- load instruction, making a saving of 2 instructions per 6 original. This is a
- very useful saving. Useful execution speedup is also obtained in consequence.
-
-
-
-
- 6.03 Complete input, output port accessible register list
- ==== ====================================================
-
-
- The registers are listed with a document reference number which is numeric only
- or preceeded by an X. The numeric only register reference numbers describe the
- standard VGA registers. Those beginning with an X, describe extended registers
- which may be specific to a particular implementation, in this case, the Trident
- 8900 video graphics controller chip.
-
- The port address is some instances contains a ? indicating that an alternative
- port address can be made available under program control. This choice will be
- between the hex digit 'b' for monochrome emulation or 'd' for colour emulation.
- The port address shown as 3?5h would be either 3b5h or 3d5h depending upon the
- value of the status bit <0> in the Miscellaneous Output Register.
-
- In some instances, the access definition for a particular register will change
- for read and write. Sometimes, for example, a different port is used depending
- on whether a value is being written to, or being read from, the register. This
- difference will be highlighted by the appearance of two descriptive lines, with
- the suffixes a,b indicating a closely related definition.
-
- Note that not all port addresses are used. This is also true of the register
- index numbers used to access the internal arrays of registers. In most cases
- the hardware defines some internal datapath for these unused register indexes.
- They are used only for testing purposes, if at all. They are not significant
- with respect to programmable functionality, so should not be accessed. Where
- a break in contiguous index numbers occurs, this is emphasised by means of a
- dummy line, which breaks the pattern of smoothly increasing index numbers.
-
-
- Document Reference
- ===---------------
-
- Index Port Address
- === ====--------------
-
- Access Port Address
- === ==== ====---------------
-
- Index Number
- === ==== ==== ===---------
-
- Read/Write Access
- === ==== ==== === ===--------------
-
- Register Description
- === ==== ==== === === ====================
-
-
- 1 3c4h ---- --- R/W Sequencer Address Register
- 2 3c4h 3c5h 00h R/W Reset Register
- 3 3c4h 3c5h 01h R/W Clocking Mode Register
- 4 3c4h 3c5h 02h R/W Map Mask Register
- 5 3c4h 3c5h 03h R/W Character Map Select Register
- 6 3c4h 3c5h 04h R/W Sequencer Memory Mode Register
- ---- ---- --- ---
- X 1 3c4h 3c5h 0bh R-- Hardware Version Register {new definition}
- X 2 3c4h 3c5h 0bh --W Version Selector Register {old definition}
- ---- ---- --- ---
- X 3 3c4h 3c5h 0ch R/W Configuration Port Register 1
- X 4 3c4h 3c5h 0dh R/W Mode Control Register 2
- X 5 3c4h 3c5h 0eh R/W Mode Control Register 1
- X 6 3c4h 3c5h 0fh R/W Power-up Mode Register 2
-
-
- 7a 3b4h ---- --- R/W CRT Controller Address Register
- b 3d4h ---- --- R/W CRT Controller Address Register
- 8 3?4h 3?5h 00h R/W Horizontal Total Register
- 9 3?4h 3?5h 01h R/W Horizontal Display Enable End Register
- 10 3?4h 3?5h 02h R/W Start Horizontal Blanking Register
- 11 3?4h 3?5h 03h R/W End Horizontal Blanking Register
- 12 3?4h 3?5h 04h R/W Start Horizontal Retrace Pulse Register
- 13 3?4h 3?5h 05h R/W End Horizontal Retrace Register
- 14 3?4h 3?5h 06h R/W Vertical Total Register
- 15 3?4h 3?5h 07h R/W CRT Controller Overfow Register
- 16 3?4h 3?5h 08h R/W Preset Row Scan Register
- 17 3?4h 3?5h 09h R/W Maximum Scan Line Register
- 18 3?4h 3?5h 0ah R/W Cursor Start Register
- 19 3?4h 3?5h 0bh R/W Cursor End Register
- 20 3?4h 3?5h 0ch R/W Start Address High Register
- 21 3?4h 3?5h 0dh R/W Start Address Low Register
- 22 3?4h 3?5h 0eh R/W Cursor Location High Register
- 23 3?4h 3?5h 0fh R/W Cursor Location Low Register
- 24 3?4h 3?5h 10h R/W Vertical Retrace Start Register
- 25 3?4h 3?5h 11h R/W Vertical Retrace End Register
- 26 3?4h 3?5h 12h R/W Vertical Display Enable End Register
- 27 3?4h 3?5h 13h R/W Offset Register
- 28 3?4h 3?5h 14h R/W Underline Location Register
- 29 3?4h 3?5h 15h R/W Start Vertical Blanking Register
- 30 3?4h 3?5h 16h R/W End Vertical Blanking Register
- 31 3?4h 3?5h 17h R/W CRTC Mode Control Register
- 32 3?4h 3?5h 18h R/W Line Compare Register
- ---- ---- --- ---
- X 7 3?4h 3?5h 1eh R/W CRTC Module Testing Register
- X 8 3?4h 3?5h 1fh R/W Software Programming Register
- ---- ---- --- ---
- X 9 3?4h 3?5h 22h R-- CPU Latch Read Back Register
- ---- ---- --- ---
- X10 3?4h 3?5h 24h R-- Attribute State Read Back Register
- ---- ---- --- ---
- X11 3?4h 3?5h 26h R-- Attribute Index Read Back Register
-
-
- 33 3ceh ---- --- R/W Graphics Address Register
- 34 3ceh 3cfh 00h R/W Set/Reset Register
- 35 3ceh 3cfh 01h R/W Enable Set/Reset Register
- 36 3ceh 3cfh 02h R/W Colour Compare Register
- 37 3ceh 3cfh 03h R/W Data Rotate Register
- 38 3ceh 3cfh 04h R/W Read Map Select Register
- 39 3ceh 3cfh 05h R/W Graphics Mode Register
- 40 3ceh 3cfh 06h R/W Miscellaneous Register
- 41 3ceh 3cfh 07h R/W Colour Don't Care Register
- 42 3ceh 3cfh 08h R/W Bit Mask Register
- ---- ---- --- ---
- X12 3ceh 3cfh 0eh R/W Source Address Register
- X13 3ceh 3cfh 0fh R/W Source Address Enable Register
-
-
- 43 3c0h ---- --- R/W Attribute Address Register
- 44a 3c0h 3c0h 00h --W Palette Register 00
- b 3c0h 3c1h 00h R-- Palette Register 00
- 45a 3c0h 3c0h 01h --W Palette Register 01
- b 3c0h 3c1h 01h R-- Palette Register 01
- 46a 3c0h 3c0h 02h --W Palette Register 02
- b 3c0h 3c1h 02h R-- Palette Register 02
- 47a 3c0h 3c0h 03h --W Palette Register 03
- b 3c0h 3c1h 03h R-- Palette Register 03
- 48a 3c0h 3c0h 04h --W Palette Register 04
- b 3c0h 3c1h 04h R-- Palette Register 04
- 49a 3c0h 3c0h 05h --W Palette Register 05
- b 3c0h 3c1h 05h R-- Palette Register 05
- 50a 3c0h 3c0h 06h --W Palette Register 06
- b 3c0h 3c1h 06h R-- Palette Register 06
- 51a 3c0h 3c0h 07h --W Palette Register 07
- b 3c0h 3c1h 07h R-- Palette Register 07
- 52a 3c0h 3c0h 08h --W Palette Register 08
- b 3c0h 3c1h 08h R-- Palette Register 08
- 53a 3c0h 3c0h 09h --W Palette Register 09
- b 3c0h 3c1h 09h R-- Palette Register 09
- 54a 3c0h 3c0h 0ah --W Palette Register 10
- b 3c0h 3c1h 0ah R-- Palette Register 10
- 55a 3c0h 3c0h 0bh --W Palette Register 11
- b 3c0h 3c1h 0bh R-- Palette Register 11
- 56a 3c0h 3c0h 0ch --W Palette Register 12
- b 3c0h 3c1h 0ch R-- Palette Register 12
- 57a 3c0h 3c0h 0dh --W Palette Register 13
- b 3c0h 3c1h 0dh R-- Palette Register 13
- 58a 3c0h 3c0h 0eh --W Palette Register 14
- b 3c0h 3c1h 0eh R-- Palette Register 14
- 59a 3c0h 3c0h 0fh --W Palette Register 15
- b 3c0h 3c1h 0fh R-- Palette Register 15
- 60a 3c0h 3c0h 10h --W Attribute Mode Control Register
- b 3c0h 3c1h 10h R-- Attribute Mode Control Register
- 61a 3c0h 3c0h 11h --W Overscan Colour Register
- b 3c0h 3c1h 11h R-- Overscan Colour Register
- 62a 3c0h 3c0h 12h --W Colour Plane Enable Register
- b 3c0h 3c1h 12h R-- Colour Plane Enable Register
- 63a 3c0h 3c0h 13h --W Horizontal PEL Panning Register
- b 3c0h 3c1h 13h R-- Horizontal PEL Panning Register
- 64a 3c0h 3c0h 14h --W Colour Select Register
- b 3c0h 3c1h 14h R-- Colour Select Register
-
-
- 65a 3c2h ---- --- W-- Miscellaneous Output Register
- b 3cch ---- --- --R Miscellaneous Output Register
- 66 3c2h ---- --- R-- Input Status Register Zero
- 67 3?ah ---- --- R-- Input Status Register One
-
-
- 68 3c3h ---- --- R/W Video Subsystem Enable Register
- 69 46e8h ---- --- R/W Display Adapter Enable Register
-
-
- 70 3c6h ---- --- R/W DAC Pixel Mask Register
- 71 3c7h ---- --- R-- DAC Status Register
- 72 3c7h ---- --- W-- DAC Read Data Address Register
- 73 3c8h ---- --- R/W DAC Write Data Address Register
- 74 3c9h ---- --- R/W DAC Data Register
-
-
- This concludes the list of programmable registers for the VGA controller chip.
-
-
-
-
- 6.04 Register specifications: Sequencer
- ==== ==================================
-
-
- 6.04.01 Sequencer Address Register { 3c4h --- R/W }
- ======= ======================================================
-
-
- <3..0> Sequencer Register Address
- --------------------------
-
- Port 3c5h accesses the register pointed to by the index number in this
- bit field. Index number zero is represented by <=0000>.
-
- This register is cleared to zero by hardware RESET.
-
-
- <7..4> Reserved. Always <=0000>.
- -------------------------
-
-
-
-
- 6.04.02 Reset Register { 3c5h 00h R/W }
- ======= ======================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
-
-
- This register provides capability to stop the sequencer operation. This must
- be done before changing the highly critical mode selections which govern all
- the timing signal generation for the VGA controller. Changes to the critical
- Clocking Mode Register must be preceeded by a reset to the sequencer and then
- followed by a sequencer restart.
-
-
- <0> Fast Reset Command
- ------------------
-
- <=0> Apply an immediate reset to the sequencer. This can result in
- a loss of data from the image memory. If this loss cannot be
- tolerated, the safe reset command should be used. This image
- memory loss occurs because the sequencer action maintains the
- memory refresh necessary to preserve memory data during normal
- operation. If the sequencer suddenly stops, the memory chips
- cannot receive their refresh cycles resulting in lost data.
- At the hardware level, all sequencer outputs go tristate when
- this option is selected.
-
- <=1> No immediate reset condition requested. This condition is not
- sufficient to guarantee that the sequencer will run, since it
- must occur in conjunction with an absence of Safe Reset.
-
-
- <1> Safe Reset Command
- ------------------
-
- <=0> Apply a safe reset to the sequencer. The sequencer maintains
- correct image memory signal operation during the reset period.
- This reset should be used whenever the image memory must be
- preserved across the reset. Note that this reset cannot last
- longer than a few tens of microseconds without the possibility
- of image memory corruption due to lack of refresh activity.
- The sequencer outputs do not go tristate for this setting.
-
- <=1> No safe reset condition requested. This condition is not
- sufficient to guarantee that the sequencer will run, since
- it must occur in conjunction with an absence of Fast Reset.
-
-
- <7..2> Reserved. Always <=000000>.
- ---------------------------
-
-
-
-
- 6.04.03 Clocking Mode Register { 3c5h 01h R/W }
- ======= ======================================================
-
-
- Cross reference with {6.04.02} Reset Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.03} Horizontal Display Enable End Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.06} Start Horizontal Retrace Pulse Register.
- Cross reference with {6.05.07} End Horizontal Retrace Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.07.21} Horizontal PEL Panning Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <0> Character Dot Clock Select
- --------------------------
-
- <=0> Generate character clocks using 9 dot clocks. This provides for
- separation between each character in a line of text by insertion
- of one extra pixel between characters in a horizontal direction.
- This pixel is normally given the background colour, so that the
- apparent width of each character is increased. In this way, the
- character fonts can use the full 8 pixels width, without having
- to allow for separation between neighbouring characters.
-
- However, a problem can arise with the automatic insertion of an
- extra pixel, since some characters are used for giving graphics
- effects even though text mode is in use. A graphics character
- is normally used for drawing boxes around text, such that lines
- representing the box are unbroken. This does not work when the
- hardware inserts one extra pixel for every eight actually in the
- character font. To overcome this problem, a special control bit
- can be set to ensure that any character in the ascii range from
- hex 'c0' to hex 'df' is treated so that the 8th pixel is copied
- into the 9th pixel, thereby creating continuous line graphics.
-
- See {6.07.18} Attribute Mode Control Register.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
- <=1> Generate character clocks using 8 dot clocks. This results in
- all text mode generated characters being 8 dot clocks width. On
- the display, 8 pixels are available to represent the character,
- in each scan line belonging to the character. When designing a
- character font for use with 8 pixel character width, it should
- be remembered that character separation will only occur if the
- font uses 7 of the 8 available pixels. The remaining pixel is
- used to provide background colour to prevent characters merging.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
- Packed pixel 256 colour mode halves the dot clock frequency through a
- rearrangement of the shift register structure, which shifts 4 bits at
- each clock using 2 dot clocks per 8 bit unit to represent 256 colours
- for display.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Reserved. Always <=0>.
- -----------------------
-
-
- <2> Shift Load Two Control
- ----------------------
-
- <=0> Reload the video shift registers on each character clock. This
- assumes that the video memory can respond fast enough to permit
- safe operation at the frequency of the character clock. With a
- contemporary design, this is not a problem. This is the normal
- value for the bit.
-
- The ability to load more than one byte per character clock can
- assist with display image memory address extension schemes, by
- making certain of the low order address bits redundant.
-
- See {6.05.25} CRTC Mode Control Register.
-
- The loading of more than one shift register per character clock
- also has implications for shift register interconnection. This
- is discussed elsewhere.
-
- See {6.06.07} Graphics Mode Register.
-
- Note this setting can be over-ridden by the setting of the Shift
- Load Four Control bit to <=1>. See below.
-
- <=1> Reload the video shift registers on every second character clock
- permitting use of slow image memory chips. The reload accesses
- two memory locations in parallel; the length of the video shift
- register is doubled. This permits using a slower video memory
- than would otherwise be possible.
-
- The ability to load more than one byte per character clock can
- assist with display image memory address extension schemes, by
- making certain of the low order address bits redundant.
-
- See {6.05.25} CRTC Mode Control Register.
-
- The loading of more than one shift register per character clock
- also has implications for shift register interconnection. This
- is discussed elsewhere.
-
- See {6.06.07} Graphics Mode Register.
-
- Note this setting can be over-ridden by the setting of the Shift
- Load Four Control bit to <=1>. See below.
-
-
- <3> Dot Clock Divide by Two Enable
- ------------------------------
-
- <=0> The normal dot clock frequency is available. This means that a
- single pixel will be displayed for each dot clock period. This
- is the normal setting for this bit. It provides maximum image
- resolution on the display unit.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
- <=1> The dot clock frequency is divided by two. In this manner, the
- quantity of image data available is reduced by two. This means
- that the data from what would have been originally one pixel is
- now used to specify two pixels. The result is a reduction in
- the image resolution to one half of the original value. At the
- same time, any image will extend to twice the original size.
- Commonly used for low resolution text displays at 40 characters
- per line.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
-
- <4> Shift Load Four Control
- -----------------------
-
- <=0> Reload the video shift registers on each character clock. This
- assumes that the video memory can respond fast enough to permit
- safe operation at the frequency of the character clock. With a
- contemporary design, this is not a problem. This is the normal
- value for the bit.
-
- The ability to load more than one byte per character clock can
- assist with display image memory address extension schemes, by
- making certain of the low order address bits redundant.
-
- See {6.05.25} CRTC Mode Control Register.
-
- The loading of more than one shift register per character clock
- also has implications for shift register interconnection. This
- is discussed elsewhere.
-
- See {6.06.07} Graphics Mode Register.
-
- Note this setting can be over-ridden by the setting of the Shift
- Load Two Control bit to <=1>. See above.
-
- <=1> Reload the video shift registers on every fourth character clock
- permitting use of slow image memory chips. The reload accesses
- four memory locations in parallel; the width of the video shift
- register is quadrupled. This permits a much slower video memory
- to be used than would otherwise be possible. This feature does
- not find any use in contemporary designs unless used for address
- extension schemes.
-
- The ability to load more than one byte per character clock can
- assist with display image memory address extension schemes, by
- making certain of the low order address bits redundant.
-
- See {6.05.25} CRTC Mode Control Register.
-
- The loading of more than one shift register per character clock
- also has implications for shift register interconnection. This
- is discussed elsewhere.
-
- See {6.06.07} Graphics Mode Register.
-
- Note this setting is dominant over the setting of the Shift Load
- Two Control bit. See above.
-
-
- <5> Screen Inhibit
- --------------
-
- <=0> The display screen operates normally. The contents of the image
- memory are displayed as usual, depending on the specified modes
- of the VGA controller chip.
-
- <=1> The display screen is blanked. The image memory is not accessed
- for purposes of maintaining the display. This means that there
- is full memory bandwidth available for processor access to image
- memory. During this period, the display screen remains blanked.
- However the display remains synchronised with the VGA controller
- so that the display can be re-enabled at any time.
-
- This facility is sometimes used to update a complex image such
- that the update itself cannot be viewed as it occurs. When the
- update is complete, the screen is re-enabled for normal use.
- Since image memory access is much faster than normal, an update
- made in this way can be completed in significantly less time.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
- Prior to any change to the Clocking Mode Register, the sequencer must
- be temporarily shut down. This avoids corrupted timing generation in
- the VGA controller.
-
- See {6.04.02} Reset Register.
-
- The display generation mode is either text mode or graphic mode.
-
- See {6.06.08} Miscellaneous Register.
-
-
-
-
- 6.04.04 Map Mask Register { 3c5h 02h R/W }
- ======= ======================================================
-
-
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.06.02} Set/Reset Register.
-
-
- <0> Map Plane 0 Write Enable Control
- --------------------------------
-
- <=0> Disable memory plane 0. This prevents data being written to the
- image plane 0 by any processor write operation to image memory.
- Using this facility, plane 0 contents can be preserved across a
- write operation which updates some of the other memory planes.
-
- <=1> Enable memory plane 0. A processor write operation will be able
- to modify data stored in the image memory plane 0. Unless there
- is at least one memory plane enabled, processor writes will not
- affect image memory in any way.
-
- Note when operating in Packed Pixel mode, all memory planes must
- be enabled. See {6.04.06} Sequencer Memory Mode Register.
-
-
- <1> Map Plane 1 Write Enable Control
- --------------------------------
-
- <=0> Disable memory plane 1. This prevents data being written to the
- image plane 1 by any processor write operation to image memory.
- Using this facility, plane 1 contents can be preserved across a
- write operation which updates some of the other memory planes.
-
- <=1> Enable memory plane 1. A processor write operation will be able
- to modify data stored in the image memory plane 1. Unless there
- is at least one memory plane enabled, processor writes will not
- affect image memory in any way.
-
- Note when operating in Packed Pixel mode, all memory planes must
- be enabled. See {6.04.06} Sequencer Memory Mode Register.
-
-
- <2> Map Plane 2 Write Enable Control
- --------------------------------
-
- <=0> Disable memory plane 2. This prevents data being written to the
- image plane 2 by any processor write operation to image memory.
- Using this facility, plane 2 contents can be preserved across a
- write operation which updates some of the other memory planes.
-
- <=1> Enable memory plane 2. A processor write operation will be able
- to modify data stored in the image memory plane 2. Unless there
- is at least one memory plane enabled, processor writes will not
- affect image memory in any way.
-
- Note when operating in Packed Pixel mode, all memory planes must
- be enabled. See {6.04.06} Sequencer Memory Mode Register.
-
-
- <3> Map Plane 3 Write Enable Control
- --------------------------------
-
- <=0> Disable memory plane 3. This prevents data being written to the
- image plane 3 by any processor write operation to image memory.
- Using this facility, plane 3 contents can be preserved across a
- write operation which updates some of the other memory planes.
-
- <=1> Enable memory plane 3. A processor write operation will be able
- to modify data stored in the image memory plane 3. Unless there
- is at least one memory plane enabled, processor writes will not
- affect image memory in any way.
-
- Note when operating in Packed Pixel mode, all memory planes must
- be enabled. See {6.04.06} Sequencer Memory Mode Register.
-
-
-
- <7..4> Reserved. Always <=0000>.
-
-
-
-
- 6.04.05 Character Map Select Register { 3c5h 03h R/W }
- ======= ======================================================
-
-
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <0> Character Font Memory Map 'B' Partial Offset 16K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 16K byte
-
-
- <1> Character Font Memory Map 'B' Partial Offset 32K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 32K byte
-
-
- <2> Character Font Memory Map 'A' Partial Offset 16K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 16K byte
-
-
- <3> Character Font Memory Map 'A' Partial Offset 32K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 32K byte
-
-
- <4> Character Font Memory Map 'B' Partial Offset 08K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 08K byte
-
-
- <5> Character Font Memory Map 'A' Partial Offset 08K byte
- -----------------------------------------------------
-
- <=0> Character Font Memory Map partial offset set to 00K byte
- <=1> Character Font Memory Map partial offset set to 08K byte
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
- Text mode results in character generation through hardware capability
- with the character fonts being brought into use.
-
- See {6.06.08} Miscellaneous Register.
-
- This register only becomes active when the Memory Size Specification
- indicates that more than 64K of image memory is present.
-
- See {6.04.06} Sequencer Memory Mode Register.
-
- When the fonts selected by the A and B maps are identical, there is a
- change made to the text mode attribute byte bit 3 interpretation. In
- this situation, bit 3 specifies the foreground intensity.
-
- See {6.05.22} Underline Location Register.
-
- When the fonts are distinct, text mode attribute byte bit 3 selects
- which of the character fonts to use, either A, or B. When the value
- of bit 3 is zero, font A is used. Otherwise, font B is selected.
-
- See {6.05.22} Underline Location Register.
-
- There is the possibility to extend the character set selection with
- an extension to the addressing capability for a character font base
- address.
-
- See {6.10.04} Mode Control Register 2.
-
- For convenience, the bit patterns associated with the different font
- memory offsets are specified below. They are identical for both A,B
- maps, but are shown in different sorted orders below for ease of use.
-
- Note that the hardware requires all character font data to reside in
- image memory plane 2. This cannot be circumvented by software unless
- the hardware character generator is not used. This situation results
- in a much slower text display than that obtainable with the hardware,
- but is essential for generation of text in graphics display modes.
-
-
- <5|3|2> Character Map Select A
- ----------------------
-
- <=000> Select Character Map Memory offset 00K
- <=100> Select Character Map Memory offset 08K
- <=001> Select Character Map Memory offset 16K
- <=101> Select Character Map Memory offset 24K
- <=010> Select Character Map Memory offset 32K
- <=110> Select Character Map Memory offset 40K
- <=011> Select Character Map Memory offset 48K
- <=111> Select Character Map Memory offset 56K
-
-
- <4|1|0> Character Map Select B
- ----------------------
-
- <=000> Select Character Map Memory offset 00K
- <=001> Select Character Map Memory offset 16K
- <=010> Select Character Map Memory offset 32K
- <=011> Select Character Map Memory offset 48K
- <=100> Select Character Map Memory offset 08K
- <=101> Select Character Map Memory offset 24K
- <=110> Select Character Map Memory offset 40K
- <=111> Select Character Map Memory offset 56K
-
-
-
-
- 6.04.06 Sequencer Memory Mode Register { 3c5h 04h R/W }
- ======= ======================================================
-
-
- Cross reference with {6.04.04} Map Mask Register.
- Cross reference with {6.04.05} Character Map Select Register.
- Cross reference with {6.06.02} Set/Reset Register.
- Cross reference with {6.06.06} Read Map Select Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.05} Mode Control Register 1.
-
-
- <0> Reserved. Always <=0>.
- -----------------------
-
-
- <1> Memory Size Specification
- -------------------------
-
- <=0> Specifies that the total image memory installed is 64K bytes.
- This feature was used historically when image memory was very
- much more expensive than contemporary pricing. The option is
- not used today. When this setting is active, feature support
- for multiple character sets is inhibited. In consequence the
- Character Map Select Register is disabled.
-
- See {6.04.05} Character Map Select Register.
-
- <=1> Specifies that more than 64K bytes of image memory is available.
- This used to be 256K bytes in earlier design implementations but
- this value is likely to be too small now. It is usual for image
- memory sizing to be 1024K bytes at the time of writing. This is
- is the standard setting in use today. With this setting active,
- the Character Map Select Register features become operative. In
- addition, the display memory address counter higher order output
- bits become active, permitting use of a larger addressing range.
-
- See {6.04.05} Character Map Select Register.
-
-
- <2> Processor Image Memory Access Mode Select
- -----------------------------------------
-
- <=0> Text Memory Access Mode. This affects a data transfer from the
- processor to the image memory such that it is suitable for text
- mode operations. The processor transfers 16 bits per access to
- image memory in text mode. The data consists of a character in
- the current character set together with an attribute byte which
- exterts control over the character presentation on the display.
-
- For text mode display character codes occupy image memory plane
- zero with attribute data occupying plane one. The image memory
- planes are paired (0,1) and (2,3). The Text Memory Access Mode
- directs even address accesses to planes (0,2), with odd address
- accesses directed to planes (1,3). In this way maximum ease of
- access is provided for textual data update. This is sometimes
- termed odd/even mode.
-
- To use this mode effectively it is usual to disable writes to a
- pair of planes so permitting update to a two plane pair.
-
- See {6.04.04} Map Mask Register.
-
- Only processor writes to image memory are affected by this mode.
- That is, image memory organisation continues to be multiplane in
- all respects except as described above during write addressing.
-
- Processor Image Memory Access Mapping Select must be set to zero
- for this setting to be effective. See below.
-
- <=1> Graphics Memory Access Mode. In graphics mode the image memory
- planes respond to addresses from the processor in parallel. In
- this way, all four memory planes can be read or written using a
- single access. The processor data transfer supports only 8 bit
- transfers, so various mechanisms are employed to map the 8 bits
- to each of the four bytes actually accessed. In some cases, it
- is not necessary to perform any mapping of this type at all, as
- the processor is used only to generate an address which is then
- used internally for image manipulation.
-
- The manipulation is specified in advance and all that is needed
- is a stream of processor generated addresses to put the process
- into operation. This type of operation is very fast to execute.
- It is discussed during the description of write mode 1.
-
- See {6.06.02} Set/Reset Register.
-
- Processor Image Memory Access Mapping Select must be set to zero
- for this setting to be effective. See below.
-
- See {6.06.07} Graphics Mode Register.
-
- This is rather similar to the Memory Plane Pairing Control.
- See {6.06.08} Miscellaneous Register.
-
-
- <3> Processor Image Memory Access Mapping Select
- --------------------------------------------
-
- <=0> The processor accesses all four image memory planes using a
- single access. The access for write is modified for each of
- the memory planes by means of the Map Mask Register. This
- permits multiple plane writes to take place, which is useful
- when graphics mode multi-plane operation is in effect. Each
- memory plane contains all the information of a given colour.
- Using multi-plane writes gives the capability to selectively
- change more than one colour plane for each of eight pixels,
- using one memory access. This makes for high speed updates.
-
- See the {6.04.04} Map Mask Register.
-
- The processor write accesses can be further determined with
- the Processor Image Memory Access Mode Select, when this is
- the selected setting. See above.
-
- See {6.06.06} Read Map Select Register.
-
- <=1> The processor accesses a single image memory plane during a
- single access. This memory plane is identified by the two
- least significant bits of the memory address. This provides
- a convenient means for access to image memory when packed
- pixel operation is in use. Packed pixel images do not use
- multiple memory planes for colour definition. Instead, each
- memory plane is accessed in turn, and the byte specifies the
- colour directly. For this type of image, the processor need
- is for single byte access to successive image planes as this
- setting provides. Of course only 16K bytes of each plane is
- accessible without changing the memory mapping in this mode.
- {Four planes with a 64K processor access window.}
-
- See {6.10.05} Mode Control Register 1.
-
- All effects of Processor Image Memory Access Mode Select, as
- specified above, are made null when this setting is active.
-
- See {6.06.06} Read Map Select Register.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- A Synopsis of Display Image Memory Access Control
- =================================================
-
-
- Processor Image Memory Access Mapping Select
- =-------------------------------------------
-
- Processor Image Memory Access Mode Select
- = =----------------------------------------
-
- Processor Display Memory Addressing
- = = ===================================------------------
-
-
- 0 0 Text access; odd/even mode; the low order address bit
- selects the pair of planes to access. Even addresses
- select the pair (0,2) and odd addresses (1,3).
-
- In all other respects the memory organisation remains
- multiplane.
-
- Data transfers are by word from the processor in this
- memory mode, with a character code and attribute byte
- sent together. Memory planes 2,3 are write inhibited
- to preserve the character font data in plane 2.
-
- The Read Map Select field bit 0 is not used for this
- memory mode. The remaining bit 1 selects a plane in
- the pair of planes determined by the access address,
- for read mode 0.
-
- See {6.06.06} Read Map Select Register.
-
- 0 1 Multiplane access; the planes are written by using a
- write mode and read using a read mode. The plane is
- selected by means of special registers used by these
- read and write modes. This organisation supports 16
- colours, with 8 pixels per byte across 4 planes at a
- single image memory byte address.
-
- Data transfers are single byte from the processor in
- this memory mode.
-
- The Read Map Select field denotes the plane number to
- be read by a read mode 0 access, in this memory mode.
- Planes 0 through 3 are therefore accessible.
-
- See {6.06.06} Read Map Select Register.
-
-
- 1 0 The two low order address bits are the plane address;
- the remaining address bits are shifted down to become
- a byte address into multiplane memory. This supports
- 256 colour packed pixel mode, where a byte represents
- the colour data for a single pixel.
-
- Data transfers are single byte from the processor in
- this memory mode.
-
- All two bits of the Read Map Select field are ignored
- in this memory mode, for read mode 0 access.
-
- See {6.06.06} Read Map Select Register.
-
-
- 1 1 The two low order address bits are the plane address;
- the remaining address bits are shifted down to become
- a byte address into multiplane memory. This supports
- 256 colour packed pixel mode, where a byte represents
- the colour data for a single pixel.
-
- Data transfers are single byte from the processor in
- this memory mode, for read mode 0 access.
-
- All two bits of the Read Map Select field are ignored
- in this memory mode.
-
- See {6.06.06} Read Map Select Register.
-
-
- ---------------------------------------------------------------
-
-
-
-
- 6.04.07 ................................{ 3c5h 07h R/W }
- 6.04.07 Horizontal Character Counter Reset Register...........
- ======= ======================================================
-
-
- This existance of this register is not formally recognised.
- It has only been discovered through reverse engineering the
- original VGA controller design. For this reason, it cannot
- be guaranteed to exist in all clone chips. The origin of
- this information is the Chips 82C456 chip documentation.
-
-
- <7..0> Horizontal Character Counter Reset
- ----------------------------------
-
- When any write operation occurs to this register, with data of any
- value, a special state is entered. This state holds the horizontal
- character counter in a permanent reset, making it hold the value 0.
-
- A write to any sequencer register in the index range 0..6 will make
- the special reset state terminate. Then the horizontal character
- counter is free to respond to character clocks as usual.
-
- The character row counter which counts all active display scan lines
- is clocked using a horizontal character counter derived signal. If
- the character counter reset state is entered during the vertical
- retrace period, then releasing the reset state will permit display
- operation to recommence in a synchronised manner.
-
- The motivation for this functionality is that of synchronisation to
- an external event. This affords the possibility of a display being
- synchronised to some event of interest, which might be the case for
- a system which photographs a display screen for example. Since the
- functionality has never been officially documented, the use is made
- unsafe from a portability point of view across many VGA chips.
-
-
-
-
- 6.05 Register specifications: CRT Controller
- ==== =======================================
-
-
- 6.05.01 CRT Controller Address Register { 3?4h --- R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.09} CPU Latch Read Back Register.
-
-
- <5..0> CRT Controller Register Address
- -------------------------------
-
- Port 3?5h accesses the register pointed to by the index number in this
- bit field. Index number zero is represented by <=000000>.
-
- The value of the hexadecimal digit '?' used in defining input output
- port addresses is either hex 'b' or hex 'd' depending upon the setting
- of the Miscellaneous Output Register Input Output Address Select bit.
-
- See {6.09.01} Miscellaneous Output Register.
-
- Note that bit <5> is normally set to zero, but can be used for access
- to registers normally used for manufacturing test. These are special
- registers which are specific to the Trident 8900 chip.
-
- See {6.10.09} CPU Latch Read Back Register.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- 6.05.02 Horizontal Total Register { 3?5h 00h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.03} Horizontal Display Enable End Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.06} Start Horizontal Retrace Pulse Register.
- Cross reference with {6.05.07} End Horizontal Retrace Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Horizontal Total
- ----------------
-
- This register specifies the total time required to enable a scan line
- to complete, and the next scan line to start, such that the positions
- are identical on successive scan lines. This is equivalent to seeing
- scan line generation as a repetitive operation, and allowing a fixed
- amount of time for the production of a full scan line followed by the
- full retrace interval. This register provides the means to tell when
- a new scan line period is about to start. Character periods are the
- unit of measurement.
-
- Note that this is not the same as determining when a new scan line is
- about to start. See below for details.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
- See {6.04.03} Clocking Mode Register.
-
- Because the hardware is pipelined, the number actually appearing in
- this register is the total time in character periods, minus five.
-
- When the number actually actually appearing in this register matches
- the contents of the horizontal character counter, the preparations
- needed for reset of the latter register are put into effect. After
- five more character clock periods, the reset takes place. For this
- reason, the horizontal character counter will continue to count past
- the value determined in the Horizontal Total Register. This implies
- that further value matches are possible before the counter is reset.
- In practice, the End Horizontal Blanking Register matches during the
- five character clock over-run period. See below for details.
-
- Prior to the reset, border colour generation should have recommenced
- with the completion of the display blanking period.
-
- See {6.05.05} End Horizontal Blanking Register.
- See {6.07.19} Overscan Colour Register.
-
- The effect of the reset is that border colour generation is finished,
- and the display unit begins to display actual image data.
-
-
-
- Overview of relationship with other registers
- =============================================
-
- This register is used with the horizontal character counter, which is
- the master timing reference. The values of this counter begin at zero
- and increase successively through the scan line. When the counter is
- equal to the Horizontal Total, preparations are made for the counter
- to be reset back to zero. After five further character clock periods
- this reset actually takes place. All the horizontal timing is derived
- from values which match this counter as it increases from zero to the
- maximum value. A scan line is commenced just before the counter is
- reset to zero, so there is a small offset between the display physical
- scan line position and the value of the horizontal character counter.
-
- By convention, when the horizontal character counter is reset to zero,
- the scan line begins to generate the display using image data. Prior
- to that moment, border colour will be generated, without use of image
- data. The display image will commence part way through the scan line
- so that there is an offset between actual counter values and the real
- position of the electron beam(s) forming the (colour) display image.
-
- To make this point clear, we give a value map which relates the value
- in the horizontal character counter to the activity of the display.
-
- The actual values given in hex are taken from the settings used by the
- bios, when video mode 10h is in effect. These values are illustrative
- of the conceptual approach required when formulating register values.
-
- Please note that these values may have to be encoded before actually
- being used. For example, some registers do not fully specify all the
- eight bits of the horizontal character counter. Sometimes, a setting
- is split across two different registers. The values given here are
- the functional values which do not take these coding conventions into
- account. We mention this point to avoid possible confusion between
- functional values and their coded representation in registers.
-
- See {6.05.02} Horizontal Total Register. {This.}
- See {6.05.03} Horizontal Display Enable End Register.
- See {6.05.04} Start Horizontal Blanking Register.
- See {6.05.05} End Horizontal Blanking Register.
- See {6.05.06} Start Horizontal Retrace Pulse Register.
- See {6.05.07} End Horizontal Retrace Register.
-
-
-
-
- Hex Register name Corresponding Display Activity
- === ============= ==============================
-
-
- 00 [Zero]
-
- ------------> Horizontal Character Counter start.................
- ------------> Border Colour end............................... |
- ------------> Image display start.............. | |
- | | |
- | | |
- 4f {6.05.03} Horizontal Display Enable End Register | | |
- | | |
- ------------> Image display end...............| | |
- ------------> Border Colour start................. | |
- | | |
- | | |
- 50 {6.05.04} Start Horizontal Blanking Register | | |
- | | |
- ------------> Border Colour end..................| | | |
- ------------> Display blanked start........................ | |
- | | |
- | | |
- 54 {6.05.06} Start Horizontal Retrace Pulse Register | | |
- | | |
- ------------> Scan line end............................. | | |
- ------------> Horizontal Retrace start............... | | | |
- | | | | |
- | | | | |
- 5f {6.05.02} Horizontal Total Register - {A} | | | | |
- | | | | |
- ------------> Horizontal character | | | | |
- ------------> counter prepared for | | | | |
- ------------> reset to zero | | | | |
- | | | | |
- | | | | |
- 61 {6.05.07} End Horizontal Retrace Register | | | | |
- | | | | |
- ------------> Horizontal Retrace end................| | | | |
- ------------> Scan line start..........................| | | |
- | | |
- | | |
- 62 {6.05.05} End Horizontal Blanking Register | | |
- | | |
- ------------> Display blanked end.........................| | |
- ------------> Border Colour start............................| |
- |
- |
- {6.05.02} Horizontal Total Register - {B} |
- |
- 64 ------------> Horizontal character |
- ------------> counter is actually |
- reset to zero.....................................|
-
-
-
-
- 6.05.03 Horizontal Display Enable End Register { 3?5h 01h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Horizontal Display Enable
- -------------------------
-
- This register specifies the total time during which a single scan line
- will actually display image data. The character period is the unit for
- measurement. This determines the length of a scan line in character
- periods. This measure is independant of the means by which the image
- is generated. It is therefore valid for text mode or graphics mode.
- See {6.05.02} Horizontal Total Register.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
- See {6.04.03} Clocking Mode Register.
-
- Because the hardware represents this period by means of the horizontal
- character counter which starts the active display period with a value
- of zero, at the end of the active display period the counter will have
- a value equal to the display time in character periods, minus one. It
- is that period value minus one which is programmed into this register.
-
- This register specifies the start of border colour generation.
- See {6.05.04} Start Horizontal Blanking Register.
- See {6.07.19} Overscan Colour Register.
-
-
-
-
- 6.05.04 Start Horizontal Blanking Register { 3?5h 02h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.03} Horizontal Display Enable End Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Start Horizontal Blanking
- -------------------------
-
- This register specifies the value of the horizontal character counter
- when display blanking begins. This measure is independant of the way
- in which the image is generated. It is therefore valid for text mode
- or graphics mode.
-
- See {6.05.02} Horizontal Total Register.
-
- Before this point, border colour generation will have been started.
-
- See {6.05.03} Horizontal Display Enable End Register.
- See {6.07.19} Overscan Colour Register.
-
- This point determines the end of the border colour generation.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
-
- See {6.04.03} Clocking Mode Register.
-
-
-
-
- 6.05.05 End Horizontal Blanking Register { 3?5h 03h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.07} End Horizontal Retrace Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <4..0> End Horizontal Blanking
- -----------------------
-
- This register specifies the value of the horizontal character counter
- when blanking finishes. This measure is independant of the means by
- which the image is generated. It is therefore valid for text mode or
- graphics mode. The full register width is six bits, with the higher
- order bit stored elsewhere.
-
- See {6.05.07} End Horizontal Retrace Register.
-
- A discussion of vertical timing generation is available.
-
- See {6.05.02} Horizontal Total Register.
-
- This determines the start of the border colour generation.
-
- See {6.07.19} Overscan Colour Register.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
-
- See {6.04.03} Clocking Mode Register.
-
-
- <6..5> Display Enable Skew
- -------------------
-
- <=00> 0 character clock delay
- <=01> 1 character clock delay
- <=10> 2 character clock delay
- <=11> 3 character clock delay
-
- This setting permits compensation for internal delays in the data path
- of the VGA controller, due to pipelining.
-
-
- <7> Light Pen Register Enable
- -------------------------
-
- This bit is Reserved for the Trident 8900 chip.
- This bit is used for test with the UM587 chip.
- The following is valid for the Chips 82C456 chip.
-
- <=0> Enable Lightpen Registers
- -------------------------
-
- The CRTC Registers at indexes 10h, 11h, function as light pen
- location registers. In this mode, the register assignments
- are as follows:
-
- 10h: Lightpen High Register.
- -----------------------
-
- Read only register representing the character position at
- which the lightpen became active. This portion specifies
- the 8 high order bits.
-
- Effective only in MDA/Hercules modes, or when enabled as
- described above. This facility is not used much today,
- essentially because of unfavourable results which do not
- compare well with other pointing devices.
-
- See {6.05.18} Vertical Retrace Start Register.
- See {6.10.04} Mode Control Register 2.
-
- 11h: Lightpen Low Register.
- ----------------------
-
- Read only register representing the character position at
- which the lightpen became active. This portion specifies
- the 8 low order bits.
-
- Effective only in MDA/Hercules modes, or when enabled as
- described above. This facility is not used much today,
- essentially because of unfavourable results which do not
- compare well with other pointing devices.
-
- See {6.05.19} Vertical Retrace End Register.
- See {6.10.04} Mode Control Register 2.
-
- <=1> Normal Operation
- ----------------
-
- The CRTC Registers at indexes 10h, 11h, function as normal.
-
- See {6.05.18} Vertical Retrace Start Register.
- See {6.05.19} Vertical Retrace End Register.
-
-
-
-
- 6.05.06 Start Horizontal Retrace Pulse Register { 3?5h 04h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.07} End Horizontal Retrace Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Start Horizontal Retrace Pulse
- ------------------------------
-
- This register specifies the value of the horizontal character counter
- when the horizontal retrace pulse starts. This measure is independant
- of the means by which the image is generated. It is therefore valid
- for text mode or graphics mode.
-
- This point determines where the scan line will end. The display will
- have been blanked from a time before the horizontal retrace pulse was
- started, until some time after the horizontal retrace pulse finished.
-
- See {6.05.02} Horizontal Total Register.
- See {6.05.04} Start Horizontal Blanking Register.
- See {6.05.05} End Horizontal Blanking Register.
- See {6.05.07} End Horizontal Retrace Register.
-
- This register permits control of display screen horizontal centering.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
-
- See {6.04.03} Clocking Mode Register.
-
-
-
-
- 6.05.07 End Horizontal Retrace Register { 3?5h 05h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.06} Start Horizontal Retrace Pulse Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <4..0> End Horizontal Retrace
- ----------------------
-
- This register specifies the value of the horizontal character counter
- when the horizontal retrace pulse ends. This measure is independant
- of the means by which the image is generated. It is therefore valid
- for text mode or graphics mode.
-
- This point determines when the scan line will start. The display is
- blanked from a time before the horizontal retrace pulse was started,
- until some time after the horizontal retrace pulse was finished.
-
- See {6.05.02} Horizontal Total Register.
- See {6.05.04} Start Horizontal Blanking Register.
- See {6.05.05} End Horizontal Blanking Register.
- See {6.05.06} Start Horizontal Retrace Pulse Register.
-
- Note that the width of a character in text mode can be changed from
- 8 pixels to 9 pixels which would change the apparent scan line time.
-
- See {6.04.03} Clocking Mode Register.
-
-
- <6..5> Horizontal Retrace Skew
- -----------------------
-
- <=00> 0 character clock delay
- <=01> 1 character clock delay
- <=10> 2 character clock delay
- <=11> 3 character clock delay
-
- This setting permits compensation for internal delays in the data path
- of the VGA controller, due to pipelining.
-
-
- <7> End Horizontal Blanking Bit 5
- -----------------------------
-
- This bit provides the most significant bit for this 6 bit register.
-
- See {6.05.05} End Horizontal Blanking Register.
-
-
-
-
- 6.05.08 Vertical Total Register { 3?5h 06h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.20} Vertical Display Enable End Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
- Cross reference with {6.10.12} Clear Vertical Display Enable Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Vertical Total
- --------------
-
- This register specifies the lower eight bits of the ten bits effective
- width register, used to specify the total number of display image scan
- lines. The two remaining high order bits are located elsewhere.
-
- See {6.05.09} CRT Controller Overflow Register.
-
- Because the hardware is pipelined, the number appearing in the ten bit
- wide register is the total scan line count minus two.
-
- When the number actually actually appearing in this extended register
- matches the contents of the character row counter, the preparations
- needed for reset of the latter register are put into effect. After a
- further two scan line periods, the reset takes place. For this reason
- the character row counter will continue to count past the value given
- by the extended Vertical Total Register. This is pipelining at work.
-
- This register is used in conjunction with the character row counter.
- The character row counter is a principle timing reference, which gives
- control over all operations which are determined by the number of the
- current scan line being generated. The character row counter changes
- at the end of each scan line which generates an active image display,
- to reflect the number of each scan line created. This count operation
- can be changed on option, to count pairs of scan lines. This option
- has the important property of changing the timing resolution of every
- aspect of vertical timing generation.
-
- See {6.05.25} CRTC Mode Control Register.
-
-
-
-
- Overview of relationship with other registers
- =============================================
-
- This register is used in conjunction with the character row counter,
- which is a principle timing reference. This counter starts at zero
- and steadily increases as the display develops each new scan line.
- By convention, the value zero corresponds with the first scan line
- which actually develops displayable data for the frame.
-
- When the content of the Vertical Total register matches the character
- row counter, preparations are put into effect to reset the latter, to
- begin counting scan lines for a new frame. Two scan lines later, the
- reset actually takes place.
-
- All the vertical timing is derived from values which match the counter
- as it increases from zero to the maximum value. The value zero is by
- convention associated with the very first display image scan line in a
- frame. This is not the same as the first scan line in a frame. Prior
- to the display of this first image scan line the vertical retrace will
- have returned the notional position of the electron beams to the upper
- left of the display screen.
-
- Since this traversal across the screen would damage any image display
- if the electron beams were switched on, the vertical blanking period
- starts some time before, and extends to some time after, the vertical
- retrace period. In this manner the electron beams are inhibited, so
- preserving the display with complete integrity.
-
- The character row counter controls the vertical blanking and retrace,
- before being reset to begin counting active image scan lines. This is
- the reason why the physical display unit scan line does not correspond
- directly with the scan line in the character row counter. There is a
- small offset between the two, such that when the character row counter
- is reset to zero, the display unit has already displayed some overscan
- lines immediately following the vertical retrace period.
-
- The active image display extends from scan line zero upto the maximum
- scan line specified by the Vertical Display Enable End Register. The
- overscan colour is generated from this point onwards, until the onset
- of the vertical blanking period. The vertical retrace period activity
- then takes place during vertical blanking. When the vertical blanking
- period finishes, overscan colour is again produced, but this occurs at
- the top of the display, since retrace has occured.
-
- To make these points clear we give a value map which relates the value
- in the character row counter to the activity of the display.
-
- The actual values given in hex are taken from the settings used by the
- bios, when video mode 10h is in effect. These values are illustrative
- of the conceptual approach required when formulating register values.
-
- Please note that these values may have to be encoded before actually
- being used. For example some registers do not fully specify all the
- ten bits of the character row counter. Sometimes, a setting appears
- split across two different registers. The values here are functional
- values which do not take these coding conventions into account. This
- point is mentioned to avoid possible confusion between the functional
- values and their coded representation in registers.
-
- See {6.05.08} Vertical Total Register. {This.}
- See {6.05.18} Vertical Retrace Start Register.
- See {6.05.19} Vertical Retrace End Register.
- See {6.05.20} Vertical Display Enable End Register.
- See {6.05.23} Start Vertical Blanking Register.
- See {6.05.24} End Vertical Blanking Register.
- See {6.05.26} Line Compare Register.
-
-
-
-
- Hex Register name Corresponding Display Activity
- === ============= ==============================
-
-
- 00 [Zero]
-
- ------------> Character Row Counter start........................
- ------------> Overscan Colour end............................. |
- ------------> First image scan line start...... | |
- | | |
- | | |
- ?? {6.05.26} Line Compare Register | | |
- | | |
- ------------> Start address of display | | |
- ------------> is reset to zero. Makes | | |
- ------------> a new window in which it | | |
- ------------> is possible to completely | | |
- ------------> inhibit display panning. | | |
- | | |
- | | |
- 15d {6.05.20} Vertical Display Enable End Register | | |
- | | |
- ------------> Last image scan line end........| | |
- ------------> Overscan Colour start............... | |
- | | |
- | | |
- 163 {6.05.23} Start Vertical Blanking Register | | |
- | | |
- ------------> Overscan Colour end................| | | |
- ------------> Display blanked start..................... | |
- | | |
- | | |
- 183 {6.05.18} Vertical Retrace Start Register | | |
- | | |
- ------------> Vertical Retrace start................. | | |
- | | | |
- | | | |
- 185 {6.05.19} Vertical Retrace End Register | | | |
- | | | |
- ------------> Vertical Retrace end..................| | | |
- | | |
- | | |
- 1ba {6.05.24} End Vertical Blanking Register | | |
- | | |
- ------------> Display blanked end......................| | |
- ------------> Overscan Colour start..........................| |
- |
- |
- 1bf {6.05.08} Vertical Total Register - {A} |
- |
- ------------> Character row counter |
- ------------> prepared for reset to |
- ------------> zero |
- |
- |
- {6.05.08} Vertical Total Register - {B} |
- |
- 1c1 ------------> Character row counter is |
- ------------> actually reset to zero............................|
-
-
-
-
- 6.05.09 CRT Controller Overflow Register { 3?5h 07h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.20} Vertical Display Enable End Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register provides for the high order bits needed to complete some
- wide internal registers of greater than eight bits total width. This
- is necessary since the processor input output port transfer capability
- supports only eight bit transfers.
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <0> Vertical Total Bit 8
- --------------------
- See {6.05.08} Vertical Total Register.
-
-
- <1> Vertical Display Enable End Bit 8
- ---------------------------------
- See {6.05.20} Vertical Display Enable End Register.
-
-
- <2> Vertical Retrace Start Bit 8
- ----------------------------
- See {6.05.18} Vertical Retrace Start Register.
-
-
- <3> Start Vertical Blank Bit 8
- --------------------------
- See {6.05.23} Start Vertical Blanking Register.
-
- The highest bit of the ten bit Start Vertical Blank Register is found
- in the Maximum Scan Line Register.
-
- See {6.05.11} Maximum Scan Line Register.
-
-
- <4> Line Compare Bit 8
- ------------------
- See {6.05.26} Line Compare Register.
-
- The highest bit of the ten bit Line Compare Register is located in the
- Maximum Scan Line Register.
-
- See {6.05.11} Maximum Scan Line Register.
-
-
- <5> Vertical Total Bit 9
- --------------------
- See {6.05.08} Vertical Total Register.
-
-
- <6> Vertical Display Enable End Bit 9
- ---------------------------------
- See {6.05.20} Vertical Display Enable End Register.
-
-
- <7> Vertical Retrace Start Bit 9
- ----------------------------
- See {6.05.18} Vertical Retrace Start Register.
-
-
-
-
- 6.05.10 Preset Row Scan Register { 3?5h 08h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.21} Offset Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.07.21} Horizontal PEL Panning Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- <4..0> Preset Row Scan
- ---------------
-
- This binary value determines the notional scan line within a character
- font, immediately after a vertical retrace has arrived at the display.
- When the display is operating in text mode, this value is used to give
- the correct position on the display for the first line of text. Later
- lines of text have their position on the display controlled relative
- to the preceeding lines, using the controls provided for this purpose.
-
- See {6.05.11} Maximum Scan Line Register.
-
- This capability provides for the smooth vertical scrolling of lines of
- text. During the generation of the first line of text on the display,
- some of the uppermost scan lines of a character font can be inhibited
- by use of this facility. When successively more of the first line of
- text is ommitted in this manner, the result will give the visual idea
- that the whole screen of text is slowly being scrolled upwards.
-
- To make this situation more concrete, we will look at how a character
- display is generated by the VGA controller when text mode is in use.
-
- A character font contains 256 characters, each of which is 8 pixels in
- width, with 32 scan lines depth. This means that 32 bytes, each of 8
- bits, will represent one character completely. However most character
- fonts do not require the full 32 pixel by 8 pixel format. In order to
- display all the 32 rows of 8 pixels, it is necessary to arrange that a
- conversion of each character code in a line of text takes place using
- the appropriate 8 consecutive pixels during each scan line. This scan
- line indexing into the 32 byte array of pixel data representing a font
- can be performed by means of a special scan line counter reserved just
- for character generation purposes.
-
- If this is done, it is then necessary to decide how to initialise the
- scan line counter after a vertical retrace occurs. During character
- generation, we must know the maximum value of scan line which is part
- of the character font in current use. This permits any depth of font
- to be used even though the storage format provided by the hardware is
- standardised at 32 rows by 8 columns. The maximum scan line used for
- text font generation is specified by the Maximum Scan Line Register.
-
- See {6.05.11} Maximum Scan Line Register.
-
-
- <6..5> Byte Panning Control
- --------------------
-
- The value of this bit field determines byte panning in text mode. The
- effect is to shift the displayed image left by the specified number of
- eight or nine pixel groups. The selection of eight or nine dot clocks
- is performed by the Clocking Mode Register, which directly determines
- the maximum number of pixels controlled for panning purposes. The pan
- takes effect by shifting the screen image successively to the left of
- the screen, with increasing binary panning control values.
-
- See {6.04.03} Clocking Mode Register.
-
- This panning capability is fully complementary with the pixel panning
- control available using the Horizontal PEL Panning Register.
-
- See {6.07.21} Horizontal PEL Panning Register.
-
- Note that in graphics modes employing 256 colour packed pixel format,
- the Byte Panning Control and the Horizontal PEL Panning Register must
- not be used. Instead, use the image start address to obtain a single
- pixel pan effect. Where this technique is used the screen width must
- be increased by use of the Offset Register, so that panning does not
- cause the data from a scan line to become part of the following scan
- line. This is the same as saying that panning can only modify a view
- to the extent that the view remains within a displayable image stored
- within the video memory. See below for discussion.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
- See {6.05.21} Offset Register.
- See {6.10.07} CRTC Module Testing Register.
-
-
-
-
- Essential Display Panning Concepts
- ==================================
-
- In order to understand panning, it is necessary to understand the big
- difference in display image generation when in text mode as opposed to
- graphics mode. This difference is absolutely fundamental, and arises
- because of the distinctions between the ways in which the information
- which comprises the displayed image is stored in image memory.
-
- In text mode, the image memory holds character codes and attributes,
- which, when combined together with font definitions for a character
- set, enable the VGA controller to generate characters to the display.
-
- Each character is represented by either 8 or 9 pixels in each of the
- scan lines in which it appears, depending upon the specified dot clock
- selection made by the Clocking Mode Register.
-
- See {6.04.03} Clocking Mode Register.
-
- If the pixels appearing at the extreme left of the display are removed
- from the display, then the result gives the impression of the complete
- screen image having been panned left. This function is controlled by
- the Horizontal PEL Panning Register, which takes values dependant upon
- the maximum pan required, either 8 or 9 pixels:
-
- 1. 8 pixel pan, binary value specifies left pan movement, with
- number zero representing a pan of left zero positions. The
- pan magnitude is taken modulo 8 as in:
-
- left_pan = (number_field + 0) mod 8
-
- The pan range is therefore 0 .. 7 pixels.
-
- 2. 9 pixel pan, binary value specifies a left pan movement of the
- value plus one, with number 8 representing a left pan movement
- of zero positions. The pan magnitude is taken modulo 9 with
- an offset of one as in:
-
- left_pan = (number_field + 1) mod 9
-
- The pan range is therefore 0 .. 8 pixels.
-
- Once the limit of pixel panning is reached, it is necessary to change
- the data used to generate the display. This is where byte panning is
- used. To achieve a smooth panning effect, the pixel panning register
- is gradually increased to the maximum, then changed to zero, whilst
- simultaneously increasing byte panning. This enables panning to take
- place smoothly across large portions of the displayed image.
-
- In graphics mode there are two separate image generation methods used.
-
- Multi-plane graphics images are produced by reading the image memory
- planes using a single address, which yields four parallel bytes, one
- each from each memory plane. These bytes together represent eight of
- the pixels for display. By interpreting the same numbered bit in all
- these four bytes at the same time, it is possible to produce a coding
- for 16 separate colours. In this way, the four bytes are shifted out
- to the display in parallel, so defining the colour of each successive
- pixel in the display image as one of a possible 16 distinct colours.
-
- For this type of image, the Horizontal PEL Panning Register operates
- exactly as described above, except that there is no 9 dot clock used.
- {This is only for use in text modes.}
-
- In packed pixel mode, graphics images are produced in a different way.
- There are actually three different types of packed pixel mode. These
- are:
-
- 1. Colour 2 Packed Pixel Mode. {Uses 1 bit per pixel.}
- 2. Colour 4 Packed Pixel Mode. {Uses 2 bits per pixel.}
- 3. Colour 256 Packed Pixel Mode. {Uses 8 bits per pixel.}
-
- For the Colour 2 Packed Pixel Mode, the image consists of individual
- pixels represented directly by the bits in a byte, thus the high order
- bit represents the leftmost pixel colour, foreground or background.
-
- This type of image is easily panned, exactly as described above for
- the 8 dot clock selection.
-
- The Colour 256 Packed Pixel Mode represents a single pixel colour in
- one complete byte of image memory. In this case the bit shifting of
- the Horizontal PEL Panning Register is superfluous together with the
- Byte Panning Control. Instead, the starting address of the display
- should be used to give pixel panning in both the horizontal and the
- vertical directions.
-
- Colour 4 Packed Pixel Mode uses the image memory planes in a modified
- multi-plane mode, which uses two of the four planes to specify one of
- four possible colour selections for each pixel. Neighbouring memory
- planes are used, either planes (0,1) or (2,3). In this situation the
- full Horizontal PEL Panning Register capability is used. Only the 8
- dot clock selection is applicable.
-
- A facility is available which affords the possibility of creating two
- separate windows within a single screen display. This has an impact
- on some aspects of pixel panning.
-
- The two windows are distinguished in that the first always specifies
- a non-zero starting address into the image memory, and is subject to
- panning control. The second window always begins at a display image
- memory address of zero, and may either be panned in the same manner
- as the first window, or alternatively may be made immune to panning,
- as determined by option setting.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
- See {6.07.18} Attribute Mode Control Register.
-
- The scan line where the first window ends and where the second lower
- window starts is determined by the Line Compare Register.
-
- See {6.05.26} Line Compare Register.
-
- The control governing the second window which determines whether it
- responds to panning specified for the first upper window is applied
- by the Attribute Mode Control Register.
-
- See {6.07.18} Attribute Mode Control Register.
-
- A discussion of pixel panning is available.
-
- See {6.07.21} Horizontal PEL Panning Register.
-
-
- <7> Reserved. Always <=0>.
- -----------------------
-
-
-
-
- 6.05.11 Maximum Scan Line Register { 3?5h 09h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- A single bit <7> only is affected. {Double Scan Line Display.}
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <4..0> Maximum Scan Lines
- ------------------
-
- The binary value of this field determines the highest scan line to be
- used in generating characters from any currently selected font. This
- binary value matches an internal scan line counter which commences at
- zero, so to permit generation of characters with 14 scan lines, the
- value 13 would be programmed into this field. This internal counter
- keeps track of the scan line for character generation, so is separate
- from the character row counter that counts scan lines in the display.
- The internal counter is reset to zero when it has a value equal to the
- Maximum Scan Lines field. It therefore continually cycles through all
- values from zero to the maximum.
-
- The effect of this field is to decide when it is necessary to commence
- reading the data in image memory associated with the following line of
- text. Until that time, each line of text is repeatedly read and sent
- to the character generator logic, once for each scan line in the font
- being used. In this manner, all the scan lines are built up and sent
- to the display to represent the image of one complete line of text.
-
-
- <5> Start Vertical Blank Bit 9
- --------------------------
-
- This bit represents bit 9 of the 10 bit wide representation for the
- Start Vertical Blank value.
-
- See {6.05.09} CRT Controller Overflow Register.
- See {6.05.23} Start Vertical Blanking Register.
-
-
- <6> Line Compare Bit 9
- ------------------
-
- This bit represents bit 9 of the 10 bit wide representation for the
- Line Compare Register value.
-
- See {6.05.09} CRT Controller Overflow Register.
- See {6.05.26} Line Compare Register.
-
-
- <7> Double Scan Line Display
- ------------------------
-
- <=0> Each scan line is displayed once only. This represents the
- normal operational value.
-
- <=1> Each scan line is displayed twice so increasing the depth of the
- display by a factor of two despite using the same amount of data
- needed to specify only half the number of scan lines. This is a
- compatibility feature used for low resolution display emulation.
-
- The pixel aspect ratio doubles when using this setting.
-
- This capability advances the display memory address counter to
- the next scan line in image memory only every second scan line,
- so data is repeated exactly twice during successive scan lines.
- This means the display memory address counter is actually reset
- after the first scan line of every pair, so that the same data
- can be output during the second scan line of the pair.
-
- Warning: do not confuse this capability with that provided by
- the Horizontal Retrace Divisor.
-
- See {6.05.25} CRTC Mode Control Register.
-
-
-
-
- 6.05.12 Cursor Start Register { 3?5h 0ah R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.13} Cursor End Register.
- Cross reference with {6.05.16} Cursor Location High Register.
- Cross reference with {6.05.17} Cursor Location Low Register.
-
-
- <4..0> Cursor Row Scan Start
- ---------------------
-
- This binary field represents the first scan line used to present the
- cursor when in text mode. The very first scan line is numbered zero,
- corresponding with the first scan line in the character font used to
- produce the text. It is therefore not a scan line relative to the
- start of the frame being displayed.
-
- The displayed cursor will extend from this value, through to the value
- specified in the Cursor Row Scan End field.
-
- The hardware generated cursor is only active in text mode.
-
- See {6.05.13} Cursor End Register.
- See {6.05.16} Cursor Location High Register.
- See {6.05.17} Cursor Location Low Register.
-
-
- <5> Cursor Enable
- -------------
-
- <=0> Text mode hardware cursor is displayed. Cursor on.
- <=1> Text mode hardware cursor is inhibited. Cursor off.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- 6.05.13 Cursor End Register { 3?5h 0bh R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.12} Cursor Start Register.
- Cross reference with {6.05.16} Cursor Location High Register.
- Cross reference with {6.05.17} Cursor Location Low Register.
-
-
- <4..0> Cursor Row Scan End
- -------------------
-
- This binary field represents the first scan line used to present the
- cursor when in text mode. The very first scan line is numbered zero,
- corresponding with the first scan line in the character font used to
- produce the text. It is therefore not a scan line relative to the
- start of the frame being displayed.
-
- The displayed cursor will extend from the value specified in the field
- Cursor Row Scan End, through to this value, inclusive.
-
- The hardware generated cursor is only active in text mode.
-
- See {6.05.12} Cursor Start Register.
- See {6.05.16} Cursor Location High Register.
- See {6.05.17} Cursor Location Low Register.
-
-
- <6..5> Cursor Skew Control
- -------------------
-
- This binary field specifies the amount of right skew applied to the
- cursor, when it is visible. In this way, it is possible to displace
- the cursor to the right of the character where it would normally be
- produced. This feature can sometimes be of benefit when very small
- characters are produced during high resolution screen operation.
-
- It should be used with care, however, since visual disorientation
- can result from over-use of the higher displacement values.
-
- The main motivation for this control is to compensate for internal
- pipeline delays in the VGA controller.
-
- See {6.05.16} Cursor Location High Register.
- See {6.05.17} Cursor Location Low Register.
-
-
- <7> Reserved. Always <=0>.
- -----------------------
-
-
-
-
- 6.05.14 Start Address High Register { 3?5h 0ch R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.21} Offset Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.05} Mode Control Register 1.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Start Address High
- ------------------
-
- This binary value represents 8 of the possible 16 to 17 display start
- address bits. The display generation uses this address to determine
- where to commence reading image memory. This address corresponds to
- the upper left of the display screen.
-
- In the following display modes, addresses wrap as indicated:
- Colour Graphics Adapter ==> 16K or 14 bits wide addressing.
- Monochrome Display Adapter ==> 32K or 15 bits wide addressing.
- Hercules mode ==> 64K or 16 bits wide addressing.
-
- See {6.10.04} Mode Control Register 2.
-
- There may be some address alignment implications, depending upon the
- way in which memory addresses are used during the display generation
- process.
-
- See {6.05.22} Underline Location Register.
- See {6.05.25} CRTC Mode Control Register.
-
- The lower bits <7..0> are found in the Start Address Low Register.
-
- See {6.05.15} Start Address Low Register.
-
- The upper bit <16> is a switchable option. Assume a maximum image
- size of 1024K arranged in four planes of 256K; it is possible with
- 17 bits of start address to specify upto 128K of offset into image
- memory. This is adequate to support two separate display pages.
-
- See {6.10.07} CRTC Module Testing Register.
-
- There is also a start address bit <19> available for configurations
- with more than 512K of image memory. This bit defines which memory
- bank is to be used for display purposes, so is quite distinct from
- that accessible to the processor. The display hardware is not able
- to address images larger than 512K unless 1024x768 256 colour mode
- is used. For display images smaller than 512K, bit <19> is useful.
-
- See {6.10.05} Mode Control Register 1.
-
- During display operation, there is potential to reset the display
- image current address to zero, coincidently with the commencement
- of a new display scan line. This facility is useful for providing
- two separate window areas on the display screen. The first window
- possesses a start address which is greater than zero, and displays
- for the required number of scan lines. Then, at a scan line given
- by the Line Compare Register, the current display address is reset
- to zero, thereby displaying the second window.
-
- See {6.05.26} Line Compare Register.
-
- This second window has the useful property that it can be protected
- from panning. This means that during panning operations affecting
- the upper window, the lower window will either pan in the same way,
- or remain completely unchanged depending upon an option bit setting.
-
- See {6.07.18} Attribute Mode Control Register.
-
-
-
-
- 6.05.15 Start Address Low Register { 3?5h 0dh R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.21} Offset Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.05} Mode Control Register 1.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Start Address Low
- -----------------
-
- This binary value represents 8 of the possible 16 to 17 display start
- address bits. The display generation uses this address to determine
- where to commence reading image memory. This address corresponds to
- the upper left of the display screen.
-
- In the following display modes, addresses wrap as indicated:
- Colour Graphics Adapter ==> 16K or 14 bits wide addressing.
- Monochrome Display Adapter ==> 32K or 15 bits wide addressing.
- Hercules mode ==> 64K or 16 bits wide addressing.
-
- See {6.10.04} Mode Control Register 2.
-
- There may be some address alignment implications, depending upon the
- way in which memory addresses are used during the display generation
- process.
-
- See {6.05.22} Underline Location Register.
- See {6.05.25} CRTC Mode Control Register.
-
- The upper bits <15..8> are found in the Start Address High Register.
-
- See {6.05.14} Start Address High Register.
-
- The upper bit <16> is a switchable option. Assume a maximum image
- size of 1024K arranged in four planes of 256K; it is possible with
- 17 bits of start address to specify upto 128K of offset into image
- memory. This is adequate to support two separate display pages.
-
- See {6.10.07} CRTC Module Testing Register.
-
- There is also a start address bit <17> available for configurations
- with more than 512K of image memory. This bit defines which memory
- bank is to be used for display purposes, so is quite distinct from
- that accessible to the processor. The display hardware is not able
- to address images larger than 512K unless 1024x768 256 colour mode
- is used. For display images smaller than 512K, bit <17> is useful.
-
- See {6.10.05} Mode Control Register 1.
-
- During display operation, there is potential to reset the display
- image current address to zero, coincidently with the commencement
- of a new display scan line. This facility is useful for providing
- two separate window areas on the display screen. The first window
- possesses a start address which is greater than zero, and displays
- for the required number of scan lines. Then, at a scan line given
- by the Line Compare Register, the current display address is reset
- to zero, thereby displaying the second window.
-
- See {6.05.26} Line Compare Register.
-
- This second window has the useful property that it can be protected
- from panning. This means that during panning operations affecting
- the upper window, the lower window will either pan in the same way,
- or remain completely unchanged depending upon an option bit setting.
-
- See {6.07.18} Attribute Mode Control Register.
-
-
-
-
- 6.05.16 Cursor Location High Register { 3?5h 0eh R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.12} Cursor Start Register.
- Cross reference with {6.05.13} Cursor End Register.
- Cross reference with {6.05.17} Cursor Location Low Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <7..0> Cursor Location High
- --------------------
-
- This binary value represents an image memory address. As the display
- is created, image data is read from image memory. When this address
- is accessed in order to create the display, the cursor will be placed
- to coincide with the corresponding character position on the screen,
- subject only to any applied cursor right skew.
-
- A hardware cursor is only generated in text mode.
-
- See {6.05.12} Cursor Start Register.
- See {6.05.13} Cursor End Register.
- See {6.05.17} Cursor Location Low Register.
-
- In the following display modes, addresses wrap as indicated:
- Colour Graphics Adapter ==> 16K or 14 bits wide addressing.
- Monochrome Display Adapter ==> 32K or 15 bits wide addressing.
- Hercules mode ==> 64K or 16 bits wide addressing.
-
- See {6.10.04} Mode Control Register 2.
-
-
-
-
- 6.05.17 Cursor Location Low Register { 3?5h 0fh R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.12} Cursor Start Register.
- Cross reference with {6.05.13} Cursor End Register.
- Cross reference with {6.05.16} Cursor Location High Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <7..0> Cursor Location Low
- -------------------
-
- This binary value represents an image memory address. As the display
- is created, image data is read from image memory. When this address
- is accessed in order to create the display, the cursor will be placed
- to coincide with the corresponding character position on the screen,
- subject only to any applied cursor right skew.
-
- A hardware cursor is only generated in text mode.
-
- See {6.05.12} Cursor Start Register.
- See {6.05.13} Cursor End Register.
- See {6.05.16} Cursor Location High Register.
-
- In the following display modes, addresses wrap as indicated:
- Colour Graphics Adapter ==> 16K or 14 bits wide addressing.
- Monochrome Display Adapter ==> 32K or 15 bits wide addressing.
- Hercules mode ==> 64K or 16 bits wide addressing.
-
- See {6.10.04} Mode Control Register 2.
-
-
-
-
- 6.05.18 Vertical Retrace Start Register { 3?5h 10h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Vertical Retrace Start
- ----------------------
-
- This binary value represents the 8 lower bits of the 10 bit wide
- Vertical Retrace Start Register. This register is compared with
- the character row counter which therefore matches when a certain
- scan line is displayed. The upper bits are stored elsewhere.
-
- See {6.05.09} CRT Controller Overflow Register.
-
- When the match occurs, the vertical retrace period begins. This
- generates the vertical retrace signal to the display unit, which
- then commences the return of the electron beam scanning position
- to the upper left of the display screen. The vertical retrace
- period continues until the character row counter is of identical
- value with that in the Vertical Retrace End Register.
-
- See {6.05.19} Vertical Retrace End Register.
-
- At the time the vertical retrace commences, the vertical blanking
- period will already have begun. This is so that the retrace will
- not disturb the image present on the screen. Vertical blanking
- continues until after the vertical retrace period has ended.
-
- See {6.05.23} Start Vertical Blanking Register.
- See {6.05.24} End Vertical Blanking Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
- A detailed discussion of vertical timing issues is available with
- a timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
- The following is not true for the Trident 8900 chip.
- The following is valid for the Chips 82C456 chip.
-
- The Vertical Retrace Start Register can be made invisible at this
- index address, when the Lightpen High Register is placed at this
- same register index.
- For details see the Light Pen Register Enable description.
-
- See {6.05.05} End Horizontal Blanking Register.
-
-
-
-
- 6.05.19 Vertical Retrace End Register { 3?5h 11h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.09.03} Input Status Register Zero.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <3..0> Vertical Retrace End
- --------------------
-
- This binary value represents the 4 lower bits of the 10 bit wide
- character row counter. The character row counter determines the
- current scan line being generated for the display. When a match
- occurs in these lower four bits, the vertical retrace period end
- is signalled. The comparison between these low bits only starts
- when the vertical retrace period has commenced, consequently the
- possibility of an ambiguous match cannot occur. This coding has
- the property of limiting the maximum period to 15 scan lines.
-
- See {6.05.18} Vertical Retrace Start Register.
-
- At the time the vertical retrace commences, the vertical blanking
- period will already have begun. This is so that the retrace will
- not disturb the image present on the screen. Vertical blanking
- continues until after the vertical retrace period has ended.
-
- See {6.05.23} Start Vertical Blanking Register.
- See {6.05.24} End Vertical Blanking Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
- A detailed discussion of vertical timing issues is available with
- a timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
-
- <4> Clear Vertical Interrupt
- ------------------------
-
- This bit is cleared by hardware RESET.
-
- <=0> Clear the vertical interrupt state.
- <=1> Normal vertical interrupt state operation.
-
- This interrupt status is obtainable from a status bit provided for
- just this purpose. It can be useful when interrupts are inhibited
- yet it is still necessary to obtain vertical timing information.
-
- See {6.09.03} Input Status Register Zero.
-
-
- <5> Enable Vertical Interrupt
- -------------------------
-
- This bit is cleared by hardware RESET.
-
- <=0> Enable the vertical interrupt {assigned by hardware to IRQ2}.
- This will only occur if the programmable interrupt controller
- 8259 was initialised appropriately, since all interrupts must
- first be routed through this chip before being serviced by an
- interrupt program in the processor.
-
- <=1> Disable the vertical interrupt.
-
- This interrupt status is obtainable from a status bit provided for
- just this purpose. It can be useful when interrupts are inhibited
- yet it is still necessary to obtain vertical timing information.
-
- See {6.09.03} Input Status Register Zero.
-
-
- <6> Refresh Bandwidth Select
- ------------------------
-
- <=0> Generate 3 image memory refresh cycles per horizontal scan
- line. These refresh cycles prevent data stored in dynamic
- RAM {random access memory} chips from being lost.
-
- <=1> Generate 5 image memory refresh cycles per horizontal scan
- line. If more refresh cycles are needed to keep the image
- memory intact, less time is available for processor access.
-
- This field is sometimes termed CPU Bandwidth Select, for reasons
- which will become apparent below.
-
- Small image memories require lower numbers of refresh periods than
- do larger memories with more data to refresh.
-
- The greater the refresh activity, the less opportunity there is to
- access the memory for processor reads and writes. With high image
- resolution displays the issue of processor access to image memory
- can become critical in determining the display update speed.
-
- The processor can make a request to access image memory, which then
- cannot be granted immediately as all display activity has priority.
- A relatively long access delay can then ensue until the access is
- finally granted. Although the delay is measured in microseconds,
- this still represents a significant delay for fast processors which
- could have executed possibly many instructions during this period.
-
- A memory can be either read, written or refreshed at any one time.
- The sequencer determines the moment by moment activity for all the
- image display RAM chips, thereby ensuring that the maximum use is
- made of image memory capability at all times.
-
- Bandwidth is a hardware term which is concerned with describing a
- rate at which information is transferred, or at which an activity
- is, or can be, performed. Typically, bandwidth is measured using
- a number which represents the count of things taking place over a
- fixed time period, usually one second. Because this measure is
- identical with the measure of frequency, the unit of bandwidth is
- the Hertz, or Hz. Display memory bandwidth therefore describes
- the number of units of data which can be transferred into or out
- of the display memory, in one second. It provides a broad measure
- of display unit capability. However, like all broad measures, it
- should not be taken too seriously.
-
-
- <7> CRTC Register Protect
- ---------------------
-
- This bit is cleared by hardware RESET.
-
- <=0> Enable writes to CRTC Registers at indexes 0 .. 7.
- <=1> Disable writes to CRTC Registers at indexes 0 .. 7.
-
-
- The ability to protect certain important register groups can assist
- with emulation, by preventing programs from changing critical data.
-
- Typical use allows direct register writes from software, by keeping
- registers which cannot be changed intact, whilst permitting others
- to be modified. This is an emulation issue only, so is of little
- importance for new software architecture implementations.
-
-
- See {6.05.02} Horizontal Total Register. {0}
- See {6.05.03} Horizontal Display Enable End Register. {1}
- See {6.05.04} Start Horizontal Blanking Register. {2}
- See {6.05.05} End Horizontal Blanking Register. {3}
- See {6.05.06} Start Horizontal Retrace Pulse Register. {4}
- See {6.05.07} End Horizontal Retrace Register. {5}
- See {6.05.08} Vertical Total Register. {6}
- See {6.05.09} CRT Controller Overflow Register. {7}
-
-
- The following is not true for the Trident 8900 chip.
- The following is valid for the Chips 82C456 chip.
-
- The Vertical Retrace End Register can be made invisible at this
- index address, when the Lightpen Low Register is placed at this
- same register index.
- For details see the Light Pen Register Enable description.
-
- See {6.05.05} End Horizontal Blanking Register.
-
-
-
-
- 6.05.20 Vertical Display Enable End Register { 3?5h 12h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.07.19} Overscan Colour Register.
- Cross reference with {6.10.12} Clear Vertical Display Enable Register.
-
-
- <7..0> Vertical Display Enable End
- ---------------------------
-
- This binary value represents the eight lower order bits of a ten bit
- width Vertical Display Enable End value. This ten bit value is used
- in conjunction with the character row counter. When a match between
- these two values occurs, the active portion of the display finishes.
-
- This happens when the current display scan line runs into the first
- non-display scan line. At that time, the display unit produces the
- colour specified by the Overscan Colour Register. Typically several
- scan lines, termed overscan lines, are produced both at a frame end
- and at a frame start. The two high order bits are stored elsewhere.
-
- See {6.05.09} CRT Controller Overflow Register.
- See {6.07.19} Overscan Colour Register.
-
- The active part of the display image is produced from the time when
- the character row counter has the value zero, representing the first
- scan line of the image proper, through to the value in this register.
-
- The only time this is not true is when the vertical display enable
- state is cleared asynchronously by special command.
-
- See {6.10.12} Clear Vertical Display Enable Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
- A discussion of vertical timing and image generation is available,
- with a timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
-
-
-
- 6.05.21 Offset Register { 3?5h 13h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
-
-
- <7..0> Display Image Offset
- --------------------
-
- The value of this field defines the image width for the complete image
- retained in the image memory. This width is typically the same width
- as that of the image display, or possibly a greater width.
-
- This value employs a memory addressing unit of variable size according
- to the units of address employed by the display memory address counter
- determined by option settings:
-
-
- Display Memory Address Unit 2
- See {6.05.25} CRTC Mode Control Register.
-
- Display Memory Address Unit 4
- See {6.05.22} Underline Location Register.
-
-
- Display Memory Address Unit 4
- =----------------------------
-
- Display Memory Address Unit 2
- = =----------------------------
-
- Unit of display addressing
- = = ==========================--------------------
-
-
- 0 0 Word mode addressing { 2 byte units }
-
- 0 1 Byte mode addressing { 1 byte units }
-
- 1 0 Double word mode addressing { 4 byte units }
-
- 1 1 Double word mode addressing { 4 byte units }
-
-
- --------------------------------------------------------
-
-
- Whenever a new display scan line commences the current display address
- is adjusted to point to the data representing the new scan line. This
- might involve skipping some of the data lying within the previous scan
- line. This capability is provided so that an image much too large for
- display in a single screen can be maintained and manipulated easily in
- image memory.
-
- The screen can be made to display different portions of a much larger
- image by means of panning, in both the horizontal and vertical planes.
- In fact, for panning to work effectively, there must be a larger image
- present in image memory than that which can actually be displayed.
-
- See {6.05.10} Preset Row Scan Register.
-
- There is a circumstance where the value of the current display address
- register is not dependant upon the Display Image Offset value. There
- is a facility which can be used to provide two windows within a single
- display screen. The lower window can be made immune from panning. In
- this situation, the display address is reset to zero.
-
- See {6.05.10} Preset Row Scan Register.
-
- Note that the display memory address counter is initialised with
- the value of the Start Address Register, which automatically has
- a value expressed in the same addressing units.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
-
-
-
- 6.05.22 Underline Location Register { 3?5h 14h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.05} Character Map Select Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.21} Offset Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <4..0> Underline Location
- ------------------
-
- This field specifies which character font relative scan line will be
- used to display an underline invoked by a character attribute in the
- Monochrome Graphics Adapter, Colour Graphics Adapter or the Hercules
- modes. The first scan line in a font is numbered zero. The feature
- operates only in text mode.
-
- See {6.06.08} Miscellaneous Register.
-
- The underline attribute appears as follows in these modes.
-
- See {6.10.04} Mode Control Register 2.
-
-
- Character Attribute Byte, Monochrome Emulation Mode
- ===================================================
-
- For monochrome emulation mode, set the Display Generation Mode.
- See {6.07.18} Attribute Mode Control Register.
-
-
- <2..0> Foreground
- ----------
-
- <=000> Black
- <=001> Underline
- <=111> White
-
-
- <3> Intensity
- ---------
-
- <=0> Normal
- <=1> High Intensity {alternatively character set select}
-
- See {6.04.05} Character Map Select Register.
-
-
- <6..4> Background
- ----------
-
- <=000> Black
- <=111> White
-
-
- <7> Blink
- -----
-
- <=0> Normal
- <=1> Blink {alternatively high intensity select}
-
- See {6.07.18} Attribute Mode Control Register.
-
-
- Character Attribute Byte, Colour Emulation Mode
- ===============================================
-
- For colour emulation mode, set the Display Generation Mode.
- See {6.07.18} Attribute Mode Control Register.
-
-
- <0> Foreground Blue
- ---------------
-
- <=0> No blue colour
- <=1> Output blue colour
-
-
- <1> Foreground Green
- ----------------
-
- <=0> No green colour
- <=1> Output green colour
-
-
- <2> Foreground Red
- --------------
-
- <=0> No red colour
- <=1> Output red colour
-
-
- <3> Intensity
- ---------
-
- <=0> Normal
- <=1> High Intensity {alternatively character set select}
-
- See {6.04.05} Character Map Select Register.
-
-
- <4> Background Blue
- ---------------
-
- <=0> No blue colour
- <=1> Output blue colour
-
-
- <5> Background Green
- ----------------
-
- <=0> No green colour
- <=1> Output green colour
-
-
- <6> Background Red
- --------------
-
- <=0> No red colour
- <=1> Output red colour
-
-
- <7> Blink
- -----
-
- <=0> Normal
- <=1> Blink {alternatively high intensity select}
-
- See {6.07.18} Attribute Mode Control Register.
-
-
- <5> Display Address Dwell Count 4
- -----------------------------
-
- The display memory address counter increments the memory address at a
- rate dependant upon the character clock frequency. It is possible to
- increment the display memory address every character clock, or permit
- a number of character clock periods to elapse before the increment is
- put into effect. When the display address does not change with every
- change of character clock, the display address experiences dwell. It
- is possible to change the dwell through option settings:
-
- Display Address Dwell Count 4 {This.}
-
- Display Address Dwell Count 2
-
- See {6.05.25} CRTC Mode Control Register.
-
-
- Display Address Dwell Count 4 {This.}
- =----------------------------
-
- Display Address Dwell Count 2
- = =----------------------------
-
- Unit of display address dwell
- = = =============================----------------------
-
-
- 0 0 Dwell = 1 { 1 character clocking per increment }
-
- 0 1 Dwell = 2 { 2 character clocking per increment }
-
- 1 0 Dwell = 4 { 4 character clocking per increment }
-
- 1 1 Dwell = 2 { 2 character clocking per increment }
-
-
- -------------------------------------------------------------
-
-
- <=0> Provide a single display address increment after each character
- clock period. This provides a new image memory address for all
- new character clock periods.
-
- If the image memory is arranged in multiplane format, this will
- permit all four planes to be read at the beginning of every new
- character period. This is the usual way to access image memory
- in 16 colour multiplane format. It does not waste image space.
-
- The alternative facilities provided elsewhere are dominant over
- this option setting. See the table above.
-
- See {6.05.25} CRTC Mode Control Register.
-
- <=1> Specifies that four character clock periods must elapse before
- the display address increment takes place. Therefore a single
- image memory address is issued with four consecutive character
- clocks.
-
- This is useful where the first character clock loaded four data
- planes using the new address and it is simply required that any
- new address generated be generated four character clocks later.
- In this case the intention is that the first clock of the group
- will load data whilst the remaining three clocks remain unused.
-
- This would be the case where the unit of addressing of the image
- memory has been changed, so permitting a much larger image to be
- displayed, without needing a display memory address counter with
- an increased number of bits.
-
- See Display Memory Address Unit 4, immediately below.
-
- Alternatively, all image planes could be loaded at an identical
- image memory address on each new character clock, providing for
- repeated presentation of image data. The image produced depends
- upon the image format, either multiplane or packed pixel. Each
- situation would be examined individually for appropriate merit.
-
- The alternative facilities provided elsewhere are dominant over
- this option setting. See the table above.
-
- See {6.05.25} CRTC Mode Control Register.
-
-
- <6> Display Memory Address Unit 4
- -----------------------------
-
- The display memory address counter employs a memory addressing
- unit of variable size according to option settings:
-
- Display Memory Address Unit 4 {This.}
-
- Display Memory Address Unit 2
- See {6.05.25} CRTC Mode Control Register.
-
-
- Display Memory Address Unit 4 {This.}
- =----------------------------
-
- Display Memory Address Unit 2
- = =----------------------------
-
- Unit of display addressing
- = = ==========================--------------------
-
-
- 0 0 Word mode addressing { 2 byte units }
-
- 0 1 Byte mode addressing { 1 byte units }
-
- 1 0 Double word mode addressing { 4 byte units }
-
- 1 1 Double word mode addressing { 4 byte units }
-
-
- --------------------------------------------------------
-
-
- <=0> Provide no bit shift between the display memory address counter
- and the image memory address lines. This means that an address
- is generated into the display memory with granularity specified
- by Display Memory Address Unit 2. See the table above.
-
- See {6.05.25} CRTC Mode Control Register.
-
- With this option selected the bit width of the display memory
- address counter determines the maximum number of bytes in the
- display image. No further bytes can contribute to the image,
- since the image address space is fixed by this finite counter
- width. This can represent a problem with large images, using
- packed pixel display format with 256 colours, since each byte
- represents one pixel. With 18 bits of address counter, image
- size is restricted to 256K/512K which may not be adequate.
-
- When the display generation employs multiplane mode, the 256K
- address capability is sufficient to give full access to every
- pixel that can be stored in the image memory. This is because
- with 1024K of image memory, arranged in four parallel planes,
- 256K of address capacity covers the entire address space.
-
- Note that the display memory address counter is initialised with
- the value of the Start Address Register, which automatically has
- a value expressed in the same addressing units.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
- <=1> Left shift the display memory address counter by 2 bits before
- using the resulting address to access display memory. In this
- way, each address is multiplied by four, so becoming a double
- word address. This provides an effective increase of two bits
- in the addressing capability of the memory address counter.
-
- This option increases the maximum display image size to four
- times the original limit, which enables larger packed pixel
- images to be displayed at high resolution in 256 colours.
-
- Since the display memory address counter is 18 bits width, the
- adoption of two additional bits of addressing span provide for
- 20 bits of total addressing capability. This gives sufficient
- capacity to address a full 1024K display memory.
-
- A side effect of this greater memory addressing span is that it
- becomes impossible to address image data in a unit smaller than
- a group consisting of 4 bytes. As a direct consequence of this
- the display hardware must always use load a single 4 byte group
- at each new display memory address counter value. Only if this
- is done can the full image memory capacity be realised. In fact
- this method of addressing is ideally suited to packed pixel 256
- colour mode.
-
- Note that the display memory address counter is initialised with
- the value of the Start Address Register, which automatically has
- a value expressed in the same addressing units.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
- The alternative facilities provided elsewhere are inhibited with
- this option setting. See the table above.
-
- See {6.05.25} CRTC Mode Control Register.
-
-
- <7> Reserved. Always <=0>.
- -----------------------
-
-
-
-
- 6.05.23 Start Vertical Blanking Register { 3?5h 15h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> Start Vertical Blanking
- -----------------------
-
- This binary field specifies the lower order 8 bits of the 10 bit width
- value representing the scan line at which vertical blanking commences.
- The two remaining bits are stored elsewhere.
-
- See {6.05.11} Maximum Scan Line Register.
- See {6.05.09} CRT Controller Overflow Register.
-
- The 10 bit value is compared with the character row counter until the
- values match. The character row counter counts all active scan lines
- in the frame, commencing at zero, which is the first scan line to use
- image data in the display.
-
- When the match occurs the vertical blanking period begins. During the
- blanking period the display electron beams which illuminate the screen
- are temporarily inhibited, for the entire period of vertical retrace.
-
- See {6.05.18} Vertical Retrace Start Register.
- See {6.05.19} Vertical Retrace End Register.
-
- The vertical retrace sends the notional position of the electron beams
- to the top left of the screen. As this would damage the display image
- if the electron beams were operational, blanking prevents any problems
- of image quality by inhibiting the electron beams during retrace.
-
- The length of the blanking period is determined using a terminal value
- to indicate that blanking should finish.
-
- See {6.05.24} End Vertical Blanking Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
- A discussion of vertical display timing is available together with a
- timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
-
-
-
- 6.05.24 End Vertical Blanking Register { 3?5h 16h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <7..0> End Vertical Blanking
- ---------------------
-
- This specifies a compare value for use with the character row counter
- giving the display scan line at which the vertical blanking period is
- deemed to be complete. During the vertical blanking period, vertical
- retrace will have fully taken place.
-
- See {6.05.18} Vertical Retrace Start Register.
- See {6.05.19} Vertical Retrace End Register.
-
- The character row counter is actually of 10 bits width but the compare
- does not take place until after the vertical blanking period has begun
- so there is no ambiguity in operation. Therefore the 8 value bits are
- sufficient under these circumstances to specify upto 255 scan lines of
- vertical blanking period. This is such a large number it would never
- be used in practise.
-
- See {6.05.23} Start Vertical Blanking Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
- A discussion of vertical display timing is available together with a
- timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
-
-
-
- 6.05.25 CRTC Mode Control Register { 3?5h 17h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.20} Vertical Display Enable End Register.
- Cross reference with {6.05.21} Offset Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- A single bit <2> only is affected. {Horizontal Retrace Divisor.}
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <0> Display Address 13 Remap Row 0
- ------------------------------
-
- <=0> Replace the display memory address counter bit 13 with the
- character row counter bit 0. This means that for even row
- scan line generation, image data addresses are not offset.
- Odd row scan lines incur an address offset with equivalent
- value of 8K bytes. In this way there is an 8K offset with
- each alternate scan line display. This facility provides
- an emulation capability for Colour Graphics Adapter image
- memory layout. It is of little interest for construction
- of new software which aims for high execution speeds.
-
- See also Display Address 14 Remap Row 1, below.
-
- <=1> No modification to display memory address counter bit 13
- takes place. This is the normal setting for this option.
-
-
- <1> Display Address 14 Remap Row 1
- ------------------------------
-
- <=0> Replace the display memory address counter bit 14 with the
- character row counter bit 1. In this way, the pair number
- of the scan line being displayed changes the image memory
- address being used to generate the display. On each pair
- change, an equivalent memory offset of 16K is introduced.
-
- This option is usually employed in conjunction with that
- of Display Address 13 Remap Row 0, in order to provide a
- four bank image memory layout. This is usually used for
- Hercules adapter emulation. It is of little interest in
- terms of new software aiming for high speed operation.
-
- <=1> No modification to display memory address counter bit 14
- takes place. This is the normal setting for this option.
-
-
- <2> Horizontal Retrace Divisor
- --------------------------
-
- <=0> This option selects horizontal retrace as the source of the
- decision to increment the character row counter which keeps
- track of the scan line being generated for display. Normal
- operation of the generation process takes place using this
- option setting. The character row counter increments after
- every scan line of the active image is completed.
-
- <=1> This option counts two horizontal retrace events before the
- increment of the character row counter takes place. After
- two scan lines have completed, the character row counter is
- incremented by only one scan line. In this way, the timing
- period for all vertical timing is increased to double the
- usual period. At the same time, the maximum number of scan
- lines resolvable in the 10 bits width character row counter
- increases from 1024 to 2048. This can be used to create a
- display with much higher vertical resolution.
-
- See {6.05.08} Vertical Total Register.
- See {6.05.18} Vertical Retrace Start Register.
- See {6.05.19} Vertical Retrace End Register.
- See {6.05.20} Vertical Display Enable End Register.
- See {6.05.23} Start Vertical Blanking Register.
- See {6.05.24} End Vertical Blanking Register.
- See {6.05.26} Line Compare Register.
-
- While this mode is operational, the display memory address
- counter operation is unaffected and so behaves as normal.
- This means that the image data is always read from display
- memory with continually increasing addresses. Every scan
- line is built using image data unique to that scan line.
-
- Warning: do not confuse this capability with that provided
- by the Double Scan Line Display.
-
- See {6.05.11} Maximum Scan Line Register.
-
-
-
-
- <3> Display Address Dwell Count 2
- -----------------------------
-
- The display memory address counter increments the memory address at a
- rate dependant upon the character clock frequency. It is possible to
- increment the display memory address every character clock, or permit
- a number of character clock periods to elapse before the increment is
- put into effect. When the display address does not change with every
- change of character clock, the display address experiences dwell. It
- is possible to change the dwell through option settings:
-
- Display Address Dwell Count 4
- See {6.05.22} Underline Location Register.
-
- Display Address Dwell Count 2 {This.}
-
-
- Display Address Dwell Count 4
- =----------------------------
-
- Display Address Dwell Count 2 {This.}
- = =----------------------------
-
- Unit of display address dwell
- = = =============================----------------------
-
-
- 0 0 Dwell = 1 { 1 character clocking per increment }
-
- 0 1 Dwell = 2 { 2 character clocking per increment }
-
- 1 0 Dwell = 4 { 4 character clocking per increment }
-
- 1 1 Dwell = 2 { 2 character clocking per increment }
-
-
- -------------------------------------------------------------
-
-
- <=0> Provide a single display address increment after each character
- clock period. This provides a new image memory address for all
- new character clock periods.
-
- If the image memory is arranged in multiplane format, this will
- permit all four planes to be read at the beginning of every new
- character period. This is the usual way to access image memory
- in 16 colour multiplane format. It does not waste image space.
-
- The alternative facilities provided elsewhere are available with
- this option setting. See table above.
-
- See {6.05.22} Underline Location Register.
-
- <=1> Specifies that two character clock periods must elapse before a
- new display memory address is produced by increment. Thus just
- one new display memory address is produced each two consecutive
- character clocks.
-
- This is useful where the first character clock loaded two data
- planes using the new address and it is simply required that any
- new address generated be generated two character clocks later.
- In this case the intention is that the first clock of the group
- will load data while the remaining clock period remains unused.
-
- This would be the case where the unit of addressing of the image
- memory has been changed, so permitting a much larger image to be
- displayed, without needing a display memory address counter with
- an increased number of bits.
-
- See Display Memory Address Unit 2, below.
-
- The alternative facilities provided elsewhere are dominated by
- this option setting. See table above.
-
- See {6.05.22} Underline Location Register.
-
-
- <4> Reserved. Always <=0>.
- -----------------------
-
-
- <5> Display Address Unit 2 Remap
- ----------------------------
-
- <=0> When option Display Memory Address Unit 2 {see below} is active,
- this selection specifies that the display memory address counter
- bit 0 will take on the value of memory address counter bit 13.
- Address counter bit 13 measures addresses in terms of 8K units.
- One 8K unit is sometimes termed a bank.
-
- The effect is to double the address span which can be achieved,
- by using bit 0 to specify which memory bank to select. In word
- address mode, bit 0 is never used for address generation since
- byte addresses are always incremented by 2. Therefore bit 0 is
- always left unchanged.
-
- When display image memory is organised as multiple planes, each
- of the four planes shares an identical, parallel address space.
- In this situation, each word address accesses all the planes in
- parallel, by using what amounts to an even byte address. When
- the increment occurs the odd byte address situated between the
- two even addresses is skipped, so remaining inaccessible.
-
- This has the effect of wasting half the address space. To avoid
- such waste, the display memory address counter bit 0 is used to
- differentiate between even and odd numbered byte addresses. The
- display unit will only access even byte addresses initially, but
- after reading half an 8K bank, will proceed to read that bank by
- accessing only odd byte addresses. In this way, the bank space
- is effectively doubled.
-
- The option of selecting bit 13 is decided by the maximum amount
- of image memory present. Were only 64K bytes available, there
- would be 16K of multiplane memory address space present with 4
- bytes at each memory address. In this situation 14 effective
- memory address counter bits <13..0> would provide 16K units of
- addressing. With this option selected, that enables the whole
- of the image memory to be used for image generation.
-
- This option simply changes the significance and manner of use of
- the display memory address counter bits. It should be used only
- for emulation purposes. Note that use of this option cannot be
- entirely avoided when the Display Memory Address Unit 2 option
- is active.
-
- <=1> When option Display Memory Address Unit 2 {see below} is active,
- this selection specifies that the display memory address counter
- bit 0 will take on the value of memory address counter bit 15.
- Address counter bit 15 measures addresses in terms of 32K units.
- One 32K unit is sometimes termed a bank.
-
- The effect is to double the address span which can be achieved,
- by using bit 0 to specify which memory bank to select. In word
- address mode, bit 0 is never used for address generation since
- byte addresses are always incremented by 2. Therefore bit 0 is
- always left unchanged.
-
- When display image memory is organised as multiple planes, each
- of the four planes shares an identical, parallel address space.
- In this situation, each word address accesses all the planes in
- parallel, by using what amounts to an even byte address. When
- the increment occurs the odd byte address situated between the
- two even addresses is skipped, so remaining inaccessible.
-
- This has the effect of wasting half the address space. To avoid
- such waste, the display memory address counter bit 0 is used to
- differentiate between even and odd numbered byte addresses. The
- display unit will only access even byte addresses initially, but
- after reading half a 32K bank, will proceed to read that bank by
- accessing only odd byte addresses. In this way, the bank space
- is effectively doubled.
-
- The option of selecting bit 15 is decided by the maximum amount
- of image memory present. Where 256K bytes is available, there
- would be 64K of multiplane memory address space present with 4
- bytes at each memory address. In this situation 16 effective
- memory address counter bits <15..0> would provide 64K units of
- addressing. With this option selected, that enables the whole
- of the image memory to be used for image generation.
-
- This option simply changes the significance and manner of use of
- the display memory address counter bits. It should be used only
- for emulation purposes. Note that use of this option cannot be
- entirely avoided when the Display Memory Address Unit 2 option
- is active.
-
-
- <6> Display Memory Address Unit 2
- -----------------------------
-
- The display memory address counter employs a memory addressing
- unit of variable size according to option settings:
-
- Display Memory Address Unit 2 {This.}
-
- Display Memory Address Unit 4
- See {6.05.22} Underline Location Register.
-
-
- Display Memory Address Unit 4
- =----------------------------
-
- Display Memory Address Unit 2 {This.}
- = =----------------------------
-
- Unit of display addressing
- = = ==========================--------------------
-
-
- 0 0 Word mode addressing { 2 byte units }
-
- 0 1 Byte mode addressing { 1 byte units }
-
- 1 0 Double word mode addressing { 4 byte units }
-
- 1 1 Double word mode addressing { 4 byte units }
-
-
- --------------------------------------------------------
-
-
- <=0> Left shift the display memory address counter by 1 bit, before
- using the resulting address to access display memory. In this
- way, each address is multiplied by two, thus becoming a double
- byte address. This provides an apparent effective increase of
- one bit in the memory address counter addressing capability.
-
- However, it also fails to use bit 0 of the resulting effective
- memory address, which would decrease the size of the resulting
- address space. There is automatic capability to use the extra
- bit 0 to increase the size of the address space. Note that it
- has the effect of returning the address space size to the same
- size it was before Display Memory Address Unit 2 became active.
-
- Thus this option simply changes the interpretation attributed
- to the display memory address counter, and does not increase
- the address range generated. However, the organisation of the
- address space is changed. Use this facility with due caution,
- probably only for emulation purposes.
-
- See Display Address Unit 2 Remap, immediately above.
-
- This option is often termed word address mode, since two bytes
- make up one single word.
-
- Note that the display memory address counter is initialised with
- the value of the Start Address Register, which automatically has
- a value expressed in the same addressing units.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
- The alternative facilities provided elsewhere are dominant over
- this option setting. This is shown clearly in the table above.
-
- See {6.05.22} Underline Location Register.
-
-
- <=1> Provide no bit shift between the display memory address counter
- and the image memory address lines. This means that an address
- is generated into the display memory with a granularity of one
- single byte. This option is often termed byte address mode.
-
- With this option selected the bit width of the display memory
- address counter determines the maximum number of bytes in the
- display image. No further bytes can contribute to the image,
- since the image address space is fixed by this finite counter
- width. This can represent a problem with large images, using
- packed pixel display format with 256 colours, since each byte
- represents one pixel. With 18 bits of address counter, image
- size is restricted to 256K.
-
- Note that the display memory address counter is initialised with
- the value of the Start Address Register, which automatically has
- a value expressed in the same addressing units.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
- The alternative facilities provided elsewhere are dominant over
- this option setting. This is shown clearly in the table above.
-
- See {6.05.22} Underline Location Register.
-
-
- <7> Horizontal/Vertical Retrace Reset
- ---------------------------------
-
- <=0> Reset the horizontal and vertical retrace signals to the
- display unit.
-
- <=1> Generate horizontal and vertical retrace signals to the
- display unit. This is the usual setting for the option.
-
-
-
-
- A note on addresses produced by the display memory address counter
- ==================================================================
-
-
- Addresses are generated by the display memory address counter, but
- these addresses are then mapped to the actual memory address lines
- before being used. The table shown below gives the detail of this
- mapping.
-
-
-
-
- Physical memory address used for display generation
- ====-----------------------------------------------
-
-
- Display Memory Address Counter Bit
- ==== -------------------------------------------------
- | | |
- | | |
- Byte Mode Addressing | | |
- ==== ====--------------------- | |
- | |
- | |
- Word Mode Addressing | |
- ==== ==== ====------------------------- |
- |
- |
- Double Word Mode Addressing |
- ==== ==== ==== ====-----------------------------
-
-
- Comments
- ==== ==== ==== ==== ------------------------------------
-
-
- PA00 MA00 [1] [2] [1] is defined by the option
- Display Address Unit 2 Remap
- PA01 MA01 MA00 [3] see above <5>. This is only
- valid in word address mode.
- PA02 MA02 MA01 MA00
-
- PA03 MA03 MA02 MA01
- [2] is defined by the display
- PA04 MA04 MA03 MA02 mode in use.
-
- PA05 MA05 MA04 MA03 See Shift Load Two Control
- {6.04.03} Clocking Mode Register
- PA06 MA06 MA05 MA04 See Shift Load Four Control
- {6.04.03} Clocking Mode Register
- PA07 MA07 MA06 MA05
-
- PA08 MA08 MA07 MA06
- [3] is defined by the display
- PA09 MA09 MA08 MA07 mode in use.
-
- PA10 MA10 MA09 MA08 See Shift Load Two Control
- {6.04.03} Clocking Mode Register
- PA11 MA11 MA10 MA09 See Shift Load Four Control
- {6.04.03} Clocking Mode Register
- PA12 MA12 MA11 MA10
-
- PA13 MA13 MA12 MA11
-
- PA14 MA14 MA13 MA12
-
- PA15 MA15 MA14 MA13
-
- PA16 MA16 MA15 MA14
-
- PA17 MA17 MA16 MA15
-
- PA18 ---- MA17 MA16
-
- PA19 ---- ---- MA17
-
-
- --------------------------------------------------------------------
-
-
-
-
- 6.05.26 Line Compare Register { 3?5h 18h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.07.21} Horizontal PEL Panning Register.
-
-
- <7..0> Line Compare
- ------------
-
- This binary field represents the lower eight bits of the full 10 bit
- wide value of the Line Compare Register. The 10 bit value specifies
- the scan line registered by the character row counter when a change
- should be made to a second display window in the two window screen.
- The higher order bits are held elsewhere.
-
- See {6.05.09} CRT Controller Overflow Register.
- See {6.05.11} Maximum Scan Line Register.
-
- The two windows are distinguished in that the first always specifies
- a non-zero starting address into the image memory, and is subject to
- panning control. The second window always begins at a display image
- memory address of zero, and may either be panned in the same manner
- as the first window, or alternatively may be made immune to panning,
- as determined by option setting.
-
- When the match occurs with the character row counter, the display
- memory address counter is reset to zero, ready for display of the
- second, lower window. Simultaneously, any panning controls which
- were in operation for the upper window are optionally cancelled,
- until the next frame display commences.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
- See {6.07.18} Attribute Mode Control Register.
-
- A discussion of pixel panning is available.
- See {6.05.10} Preset Row Scan Register.
- See {6.07.21} Horizontal PEL Panning Register.
-
- A discussion of vertical display timing generation is available with
- a timing diagram.
-
- See {6.05.08} Vertical Total Register.
-
- The units in which vertical timing is measured can be changed by a
- factor of two upon option setting.
-
- See {6.05.25} CRTC Mode Control Register.
-
-
-
-
- 6.06 Register specifications: Graphics Controller
- ==== ============================================
-
-
- 6.06.01 Graphics Address Register { 3ceh --- R/W }
- ======= ===================================================
-
-
- <3..0> Graphics Register Address
- -------------------------
-
- Port 3cfh accesses the register pointed to by the index number in this
- bit field. Index number zero is represented by <=0000>.
-
-
- <7..4> Reserved. Always <=0000>.
- -------------------------
-
-
-
-
- 6.06.02 Set/Reset Register { 3cfh 00h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.04.04} Map Mask Register.
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.06.03} Enable Set/Reset Register.
- Cross reference with {6.06.05} Data Rotate Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.10} Bit Mask Register.
- Cross reference with {6.10.09} CPU Latch Read Back Register.
-
-
- <0> Set/Reset Data Image Plane 0
- ----------------------------
-
- During multiplane image memory write access operation by the processor
- this bit helps to determine the value written to the byte lying within
- display memory image plane 0.
-
- <=0> The data value 0 is selected for image plane zero, so long as
- the plane is suitably enabled for this operation.
-
- See {6.06.03} Enable Set/Reset Register.
-
- <=1> The data value 1 is selected for image plane zero, so long as
- the plane is suitably enabled for this operation.
-
- See {6.06.03} Enable Set/Reset Register.
-
- The precise effect of this bit is determined by the write mode used to
- perform the update operation. There are four different write modes as
- follows:
-
-
- Write Mode 0
- ============
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- Processor data for write arrive as an 8 bit wide value. These bits
- are rotated. The rotated bits are copied in parallel to data paths
- 8 bits wide associated with each of the four image memory planes.
-
- Where Set/Reset Enable Image Plane 0 is set <=1>, all eight data path
- bits associated with image plane 0 are set to just one value given by
- the single bit Set/Reset Data Image Plane 0. All other memory planes
- are processed in an identical manner. Four output data paths result,
- each of eight bits width, making a total of 32 bits.
-
- These result data paths are then operated upon by a logic unit with
- capability to perform combining operations with corresponding eight
- bit contents of four read latches, one each per image memory plane.
- The read latches must be well defined for this processing to be of
- any value. The combining operations are NO_OP, AND, OR, XOR. The
- NO_OP passes the data through unchanged, ignoring read latch data,
- but the read latches are updated with the data as a consequence.
-
- Thereafter, each plane in parallel has the result of the previously
- described processing combined with the contents of the read latches
- (which must previously have been defined using a read operation).
-
- This combining operation selects for each image plane data path, and
- for each of eight bits in one data path, the value of the processing
- path bit or the value of the read latch bit, in identical position.
- The selection is based on all eight bits of a bit mask register used
- specially for just this purpose. Any given bit position in the mask
- register will select either the process data path or the read latch
- output path, in identical manner, for the corresponding bit position
- in each of the four image planes.
-
- The output from this operation is another 32 bit wide data path, made
- up of four eight bit wide paths, one for each of four image planes.
- This final output data is written in a single write operation to each
- corresponding image plane in parallel, subject to plane write inhibit
- state. Each plane can be write inhibited in complete independance of
- any other plane. A write inhibit state prevents any write operations
- from modifying data within the corresponding image plane.
-
- Write mode 3 processes for relative colour. By contrast, write mode
- 0 should be seen as processing in terms of absolute colour.
-
- The use of the Set/Reset Enable and Set/Reset Data input is to specify
- a four bit colour value across a single bit position within all planes
- of the image memory, in parallel. In this way, the processor supplied
- data is either used unchanged, is modified partially, or is completely
- ignored when deciding how to process for update. The resulting output
- is used by the logic unit together with the read latch contents. This
- provides extremely powerful colour processing capability when properly
- used. This write mode is probably the most generally used write mode.
-
- See {6.06.07} Graphics Mode Register.
-
-
-
-
- Schematic Overview of Data Path for Write Mode 0
- ================================================
- ================================================
-
-
-
-
- Processor Data
- ===========---
- <7654.3210>
- |
- [All Planes]
- |
- |
- |
- | Multiplane
- | Rotation
- | Select
- | ==========-
- | <7654.3210>
- | |
- .| [All planes]
- | |
- | |
- | ..................|
- | |
- | |
- | |
- Data Rotation
- ===========--
- <7654.3210>
- |
- [All Planes]
- |
- |
- |
- | Copy all data into four identical data paths
- |.........................................................
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- .....| .....| .....| .....|
- | | | |
- | | | |
- | | | |
- | Force Value | Force Value | Force Value | Force Value
- | Enable bit | Enable bit | Enable bit | Enable bit
- | =========== | =========== | =========== | ===========
- | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3]
- | | | | | | | |
- | | | | | | | |
- | ......| | ......| | ......| | ......|
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | Force Value | | Force Value | | Force Value | | Force Value
- | | Data bit | | Data bit | | Data bit | | Data bit
- | | =========== | | =========== | | =========== | | ===========
- | | | | | | | | | | | |
- | | [Plane 0] | | [Plane 1] | | [Plane 2] | | [Plane 3]
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | |... | | |... | | |... | | |... |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- |... | ...| |... | ...| |... | ...| |... | ...|
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- Force Value Force Value Force Value Force Value
- of each bit of each bit of each bit of each bit
- to the same to the same to the same to the same
- equal value equal value equal value equal value
- =========== =========== =========== ===========
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- ...| ...| ...| ...|
- | | | |
- | | | |
- | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3
- | ===========- | ===========- | ===========- | ===========-
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210>
- | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3]
- | | | | | | | |
- | | | | | | | |
- |.. .....| |.. .....| |.. .....| |.. .....|
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | Multiplane | | Multiplane | | Multiplane | | Multiplane
- | | Function | | Function | | Function | | Function
- | | Select | | Select | | Select | | Select
- | | =========== | | =========== | | =========== | | ===========
- | | <7654.3210> | | <7654.3210> | | <7654.3210> | | <7654.3210>
- | | | | | | | | | | | |
- | | [All planes] | | [All planes] | | [All planes] | | [All planes]
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | ......| | | ......| | | ......| | | ......|
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- Logic Block Logic Block Logic Block Logic Block
- ...NO_OP... ...NO_OP... ...NO_OP... ...NO_OP...
- ...AND..... ...AND..... ...AND..... ...AND.....
- ...OR...... ...OR...... ...OR...... ...OR......
- ...XOR..... ...XOR..... ...XOR..... ...XOR.....
- =========== =========== =========== ===========
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- .......| .......| .......| .......|
- | | | |
- | | | |
- | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3
- | ===========- | ===========- | ===========- | ===========-
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210>
- | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3]
- | | | | | | | |
- | | | | | | | |
- | .......| | .......| | .......| | .......|
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | Multiplane | | Multiplane | | Multiplane | | Multiplane
- | | Select Bit | | Select Bit | | Select Bit | | Select Bit
- | | Definition | | Definition | | Definition | | Definition
- | | =========== | | =========== | | =========== | | ===========
- | | <7654.3210> | | <7654.3210> | | <7654.3210> | | <7654.3210>
- | | | | | | | | | | | |
- | | [All Planes] | | [All Planes] | | [All Planes] | | [All Planes]
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | ......| | | ......| | | ......| | | ......|
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- Every output Every output Every output Every output
- bit selected bit selected bit selected bit selected
- using choice using choice using choice using choice
- for that bit for that bit for that bit for that bit
- ===========- ===========- ===========- ===========-
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- | | | |
- | Plane 0 | Plane 1 | Plane 2 | Plane 3
- | Inhibit | Inhibit | Inhibit | Inhibit
- | Write | Write | Write | Write
- | ======= | ======= | ======= | =======
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- ----------- ----------- ----------- -----------
- Write Logic Write Logic Write Logic Write Logic
- for Plane 0 for Plane 1 for Plane 2 for Plane 3
- Memory Memory Memory Memory
- ----------- ----------- ----------- -----------
-
-
-
-
- Key to schematic for Write Mode 0
- =================================
-
-
- --------------------------
- Multiplane Rotation Select
- --------------------------
-
- See {6.06.05} Data Rotate Register.
-
-
- ----------------------
- Force Value Enable bit
- ----------------------
-
- See {6.06.03} Enable Set/Reset Register.
-
-
- --------------------
- Force Value Data bit
- --------------------
-
- See {6.06.02} Set/Reset Register. {This.}
-
-
- --------------------------
- Multiplane Function Select
- --------------------------
-
- See {6.06.05} Data Rotate Register.
-
-
- --------------------------------
- Multiplane Select Bit Definition
- --------------------------------
-
- See {6.06.10} Bit Mask Register.
-
-
- -----------------------
- Plane 'N' Inhibit Write
- -----------------------
-
- See {6.04.04} Map Mask Register.
-
-
-
-
- Write Mode 1
- ============
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- There is no processor data involved in using write mode 1, however the
- processor must generate a read memory or write memory operation to the
- image memory space. This provides the control input required to effect
- the data transfers which are provided by this mode.
-
- Write mode 1 provides for a very fast multiplane image data movement
- between one region of image memory to another region within the same
- image memory.
-
- This copy capability is very flexible. It can be used to perform an
- image copy, or an initialisation operation using constant image data
- to specify the value for the complete image. In both cases, 32 bits,
- that is four bytes, one each per image plane are transferred, unless
- writes are inhibited to a particular plane. Any individual plane is
- subject to write inhibit control, independantly of all other planes.
-
- To perform a true copy, a read address is generated to the multiplane
- image. This will have the effect of loading four read latches with
- data from each of the four image planes.
-
- Then a write operation is generated onto the multiplane image. This
- gives the effect of writing each of four image planes using the read
- latch data associated with each plane, in parallel. In this way, a
- single write is able to transfer 32 bits of data simultaneously.
-
- This accounts for the large image transfer bandwidth available from
- this write mode.
-
- In order to initialise an image, it is necessary to load the four read
- latches once and then to repeatedly write them into the required image
- addresses. This provides for very fast image initialisation.
-
- There is no use made of the Set/Reset Enable and Set/Reset Data during
- operations in write mode 1.
-
- Write mode 1 is mentioned in connection with Graphics Memory Access
- Mode and Processor Image Memory Access Mode Select.
-
- See {6.04.06} Sequencer Memory Mode Register.
-
-
-
-
- Schematic Overview of Data Path for Write Mode 1
- ================================================
- ================================================
-
-
-
-
- Read Latch 0 Read Latch 1 Read Latch 2 Read Latch 3
- ===========- ===========- ===========- ===========-
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- | | | |
- | Plane 0 | Plane 1 | Plane 2 | Plane 3
- | Inhibit | Inhibit | Inhibit | Inhibit
- | Write | Write | Write | Write
- | ======= | ======= | ======= | =======
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- ----------- ----------- ----------- -----------
- Write Logic Write Logic Write Logic Write Logic
- for Plane 0 for Plane 1 for Plane 2 for Plane 3
- Memory Memory Memory Memory
- ----------- ----------- ----------- -----------
-
-
-
-
- Key to schematic for Write Mode 1
- =================================
-
-
-
- -----------------------
- Plane 'N' Inhibit Write
- -----------------------
-
- See {6.04.04} Map Mask Register.
-
-
-
-
- Write Mode 2
- ============
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- Processor data for write arrive as a 4 bit wide value. Each of the
- bits are associated with a corresponding image plane, so bit 0 will
- provide data for use in conjunction with image plane 0, and so on.
-
- Each bit is copied into a data path of eight bits with each of these
- eight bits taking on the same value as the original bit. The result
- is four data paths of eight bits, one data path for each of the four
- image planes. Within a data path all eight bits are the same value,
- determined by the corresponding bit in the four bit processor data.
-
- These result data paths are then operated upon by a logic unit with
- capability to perform combining operations with corresponding eight
- bit contents of four read latches, one each per image memory plane.
- The read latches must be well defined for this processing to be of
- any value. The combining operations are NO_OP, AND, OR, XOR. The
- NO_OP passes the data through unchanged, ignoring read latch data.
-
- Thereafter, each plane in parallel has the result of the previously
- described processing combined with the contents of the read latches
- (which must previously have been defined using a read operation).
-
- This combining operation selects for each image plane data path, and
- for each of eight bits in one data path, the value of the processing
- path bit or the value of the read latch bit, in identical position.
- The selection is based on all eight bits of a bit mask register used
- specially for just this purpose. Any given bit position in the mask
- register will select either the process data path or the read latch
- output path, in identical manner, for the corresponding bit position
- in each of the four image planes.
-
- The output from this operation is another 32 bit wide data path, made
- up of four eight bit wide paths, one for each of four image planes.
- This final output data is written in a single write operation to each
- corresponding image plane in parallel, subject to plane write inhibit
- state. Each plane can be write inhibited in complete independance of
- any other plane. A write inhibit state prevents any write operations
- from modifying data within the corresponding image plane.
-
- There is no use made of the Set/Reset Enable and Set/Reset Data during
- operations in write mode 2.
-
- See {6.06.07} Graphics Mode Register.
-
-
-
-
- Schematic Overview of Data Path for Write Mode 2
- ================================================
- ================================================
-
-
-
-
- Processor Data
- ===========---
- <----.3210>
- ||||
- ||||......................................................
- ||| |
- |||.................................... |
- || | |
- ||.................. | |
- | | | |
- | | | |
- | | | |
- Repeat bit Repeat bit Repeat bit Repeat bit
- value over value over value over value over
- all 8 bits all 8 bits all 8 bits all 8 bits
- ==========- ==========- ==========- ==========-
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- ....| ....| ....| ....|
- | | | |
- | | | |
- | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3
- | ===========- | ===========- | ===========- | ===========-
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210>
- | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3]
- | | | | | | | |
- | | | | | | | |
- |.. .....| |.. .....| |.. .....| |.. .....|
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | Multiplane | | Multiplane | | Multiplane | | Multiplane
- | | Function | | Function | | Function | | Function
- | | Select | | Select | | Select | | Select
- | | =========== | | =========== | | =========== | | ===========
- | | <7654.3210> | | <7654.3210> | | <7654.3210> | | <7654.3210>
- | | | | | | | | | | | |
- | | [All planes] | | [All planes] | | [All planes] | | [All planes]
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | ......| | | ......| | | ......| | | ......|
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- Logic Block Logic Block Logic Block Logic Block
- ...NO_OP... ...NO_OP... ...NO_OP... ...NO_OP...
- ...AND..... ...AND..... ...AND..... ...AND.....
- ...OR...... ...OR...... ...OR...... ...OR......
- ...XOR..... ...XOR..... ...XOR..... ...XOR.....
- =========== =========== =========== ===========
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- .......| .......| .......| .......|
- | | | |
- | | | |
- | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3
- | ===========- | ===========- | ===========- | ===========-
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210>
- | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3]
- | | | | | | | |
- | | | | | | | |
- | .......| | .......| | .......| | .......|
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | Multiplane | | Multiplane | | Multiplane | | Multiplane
- | | Select Bit | | Select Bit | | Select Bit | | Select Bit
- | | Definition | | Definition | | Definition | | Definition
- | | =========== | | =========== | | =========== | | ===========
- | | <7654.3210> | | <7654.3210> | | <7654.3210> | | <7654.3210>
- | | | | | | | | | | | |
- | | [All Planes] | | [All Planes] | | [All Planes] | | [All Planes]
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | ......| | | ......| | | ......| | | ......|
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- Every output Every output Every output Every output
- bit selected bit selected bit selected bit selected
- using choice using choice using choice using choice
- for that bit for that bit for that bit for that bit
- ===========- ===========- ===========- ===========-
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- | | | |
- | Plane 0 | Plane 1 | Plane 2 | Plane 3
- | Inhibit | Inhibit | Inhibit | Inhibit
- | Write | Write | Write | Write
- | ======= | ======= | ======= | =======
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- ----------- ----------- ----------- -----------
- Write Logic Write Logic Write Logic Write Logic
- for Plane 0 for Plane 1 for Plane 2 for Plane 3
- Memory Memory Memory Memory
- ----------- ----------- ----------- -----------
-
-
-
-
- Key to schematic for Write Mode 2
- =================================
-
-
- --------------------------
- Multiplane Function Select
- --------------------------
-
- See {6.06.05} Data Rotate Register.
-
-
- --------------------------------
- Multiplane Select Bit Definition
- --------------------------------
-
- See {6.06.10} Bit Mask Register.
-
-
- -----------------------
- Plane 'N' Inhibit Write
- -----------------------
-
- See {6.04.04} Map Mask Register.
-
-
-
-
- Write Mode 3
- ============
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- Processor write data is not used directly to determine image data in
- this mode. Instead the eight bit data written from the processor is
- interpreted as a bit map with each bit corresponding to one pixel in
- multiplane image memory. The value of the bit determines the result
- of a computation which ultimately provides the new pixel value to be
- associated with the bit.
-
- This computation permits a pixel to take on the value for background
- colour or the value for foreground colour depending upon the written
- bit value from the processor associated with the pixel. This allows
- for modifying selected portions of an image by means of relative use
- of colour. That is, the image can be modified such that the changes
- are visible no matter what the previous underlying image colours. In
- this way, important data can be written without fear of occlusion.
-
- Write mode 3 processes for relative colour. By contrast, write mode
- 0 should be seen as processing in terms of absolute colour.
-
- Processor data for write arrive as an 8 bit wide value. These 8 bits
- are rotated. The rotated bits are logically ANDed with eight bits of
- a register specially provided for purposes of specifying which pixels
- are to be modified, at a given image memory address. The result then
- provides pixel modify permission for 8 pixels as an 8 bit wide value.
- This modify permission value is used later.
-
- The four eight bit read latch outputs associated with the four image
- memory planes are formed into four data paths, one per memory plane.
- These data paths are used as input to a logic unit, described later.
-
- Each of four bits in a specially provided register are used to define
- the value of all eight bits of a data path associated with one memory
- plane. In this way, four bits define four data paths, and every data
- path consists of eight bits, all of which share the same value. There
- is a data path associated with each of the four memory image planes.
-
- These result data paths are then operated upon by a logic unit with
- capability to perform combining operations with corresponding eight
- bit contents of four read latches, one each per image memory plane.
- The read latches must be well defined for this processing to be of
- any value. The combining operations are NO_OP, AND, OR, XOR. The
- NO_OP passes the data through unchanged, ignoring read latch data.
-
- Thereafter, each plane in parallel has the result of the previously
- described processing combined with the contents of the read latches
- according to the pixel modify permission bits derived above. These
- determine whether a pixel is preserved, or changed. {We assume the
- read latches were loaded from the same pixel group currently being
- modifed. Since the read latch data need not be defined this way it
- is prudent to point out the assumption.}
-
- This combining operation selects for each image plane data path, and
- for each of eight bits in one data path, the value of the processing
- path bit or the value of the read latch bit, in identical position.
- The selection is based on all eight bits of a permission value used
- specially for just this purpose. This permission applies to all the
- memory image planes, but affects only the corresponding bit position
- in each plane. Therefore each permission bit applies to four bits,
- each of identical bit number in each image memory plane. These four
- bits will all take their value from the same data path chosen by the
- common permission bit. Note that a data path is associated with one
- memory plane only. This means that despite sharing a permission bit
- the resulting bits in each plane will be of distinct value. This is
- a direct result of maintaining each data path in strict association
- with one single memory plane at all times.
-
- The output from this operation is another 32 bit wide data path, made
- up of four eight bit wide paths, one for each of four image planes.
- This final output data is written in a single write operation to each
- corresponding image plane in parallel, subject to plane write inhibit
- state. Each plane can be write inhibited in complete independance of
- any other plane. A write inhibit state prevents any write operations
- from modifying data within the corresponding image plane.
-
- Write mode 3 processes for relative colour. By contrast, write mode
- 0 should be seen as processing in terms of absolute colour.
-
- There is no use made of the Set/Reset Enable during operations in
- write mode 3. However, despite this, the Set/Reset Data register
- provides the value for Data Source in the write mode 3 schematic.
- This value has the dimensions of a colour value but it is used in
- a potentially complex manner. See schematic below.
-
- See {6.06.07} Graphics Mode Register.
-
- See Set/Reset Enable Image Plane 0, below.
-
-
-
-
- Schematic Overview of Data Path for Write Mode 3
- ================================================
- ================================================
-
-
-
-
- Processor Data
- ===========---
- <7654.3210>
- |
- [Permission]
- |
- |
- |
- | Permission
- | Rotation
- | Select
- | ==========-
- | <7654.3210>
- | |
- | [Permission]
- | |
- | |
- | .................|
- | |
- | |
- | |
- Data Rotation Applicable
- ===========-- Permission
- <7654.3210> Selector
- | ===========
- [Permission] <7654.3210>
- | |
- | [Permission]
- | |
- | |
- |................... .................|
- | |
- | |
- | |
- Permission
- Resolution
- ...AND....
- ==========
- <7654.3210>
- |
- [Permission]
- |
- |
- |
- |...............................................
- |
- |
- Multiplane | |
- Data Source | |
- =========== | |
- <----.3210> | |
- |||| |
- |||| |
- ||||...................................................... |
- ||| | |
- ||| | |
- |||.................................... | |
- || | | |
- || | | |
- ||.................. | | |
- | | | | |
- | | | | |
- | | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3] |
- | | | | |
- | | | | |
- | | | | |
- Repeat bit Repeat bit Repeat bit Repeat bit |
- value over value over value over value over |
- all 8 bits all 8 bits all 8 bits all 8 bits |
- ==========- ========== ========== ========== |
- <7654.3210> <7654.3210 <7654.3210 <7654.3210 |
- | | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3] |
- | | | | |
- | | | | |
- .......| .......| .......| .......| |
- | | | | |
- | | | | |
- | | | | |
- | | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3 |
- | ===========- | ===========- | ===========- | ===========- |
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210> |
- | | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3] |
- | | | | | | | | |
- | | | | | | | | |
- | .......| | .......| | .......| | .......| |
- | | | | | | | | |
- | | | | | | | | |
- | | | | | | | | |
- | | Multiplane | | Multiplane | | Multiplane | | Multiplane |
- | | Function | | Function | | Function | | Function |
- | | Select | | Select | | Select | | Select |
- | | =========== | | =========== | | =========== | | =========== |
- | | <7654.3210> | | <7654.3210> | | <7654.3210> | | <7654.3210> |
- | | | | | | | | | | | | |
- | | [All planes] | | [All planes] | | [All planes] | | [All planes] |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- | |.... | | |.... | | |.... | | |.... | |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- |..... | | |..... | | |..... | | |..... | | |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- | | | | | | | | | | | | |
- Logic Block Logic Block Logic Block Logic Block |
- ...NO_OP... ...NO_OP... ...NO_OP... ...NO_OP... |
- ...AND..... ...AND..... ...AND..... ...AND..... |
- ...OR...... ...OR...... ...OR...... ...OR...... |
- ...XOR..... ...XOR..... ...XOR..... ...XOR..... |
- =========== =========== =========== =========== |
- <7654.3210> <7654.3210> <7654.3210> <7654.3210> |
- | | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3] |
- | | | | |
- | | | | |
- .....| .....| .....| .....| |
- | | | | |
- | | | | |
- | | | | |
- | Read Latch 0 | Read Latch 1 | Read Latch 2 | Read Latch 3 |
- | ===========- | ===========- | ===========- | ===========- |
- | <7654.3210> | <7654.3210> | <7654.3210> | <7654.3210> |
- | | | | | | | | |
- | [Plane 0] | [Plane 1] | [Plane 2] | [Plane 3] |
- | | | | | | | | |
- | | | | | | | | |
- | ......| | ......| | ......| | ......| |
- | | | | | | | | |
- | | | | | | | | |
- | | | | | | | | |
- | | ......... | | .............. | | .............. | | .............P
- | | | | | | | | | | | |
- | | | | | | | | | | | |
- | | P | | P | | P | | P
- Every output Every output Every output Every output
- bit selected bit selected bit selected bit selected
- using choice using choice using choice using choice
- for that bit for that bit for that bit for that bit
- ===========- ===========- ===========- ===========-
- <7654.3210> <7654.3210> <7654.3210> <7654.3210>
- | | | |
- [Plane 0] [Plane 1] [Plane 2] [Plane 3]
- | | | |
- | | | |
- | | | |
- | Plane 0 | Plane 1 | Plane 2 | Plane 3
- | Inhibit | Inhibit | Inhibit | Inhibit
- | Write | Write | Write | Write
- | ======= | ======= | ======= | =======
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- ----------- ----------- ----------- -----------
- Write Logic Write Logic Write Logic Write Logic
- for Plane 0 for Plane 1 for Plane 2 for Plane 3
- Memory Memory Memory Memory
- ----------- ----------- ----------- -----------
-
-
-
-
- Key to schematic for Write Mode 3
- =================================
-
-
- --------------------------
- Permission Rotation Select
- --------------------------
-
- See {6.06.05} Data Rotate Register.
-
-
- ------------------------------
- Applicable Permission Selector
- ------------------------------
-
- See {6.06.10} Bit Mask Register.
-
-
- ----------------------
- Multiplane Data Source
- ----------------------
-
- See {6.06.02} Set/Reset Register.
-
-
-
- --------------------------
- Multiplane Function Select
- --------------------------
-
- See {6.06.05} Data Rotate Register.
-
-
- -----------------------
- Plane 'N' Inhibit Write
- -----------------------
-
- See {6.04.04} Map Mask Register.
-
-
-
-
- <1> Set/Reset Data Image Plane 1
- ----------------------------
-
- As for Set/Reset Image Plane 0, immediately above.
-
- See Set/Reset Enable Image Plane 1, below.
-
-
- <2> Set/Reset Data Image Plane 2
- ----------------------------
-
- As for Set/Reset Image Plane 0, immediately above.
-
- See Set/Reset Enable Image Plane 2, below.
-
-
- <3> Set/Reset Data Image Plane 3
- ----------------------------
-
- As for Set/Reset Image Plane 0, immediately above.
-
- See Set/Reset Enable Image Plane 3, below.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.06.03 Enable Set/Reset Register { 3cfh 01h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.02} Set/Reset Register.
-
-
- <0> Set/Reset Enable Image Plane 0
- ------------------------------
-
- During multiplane image memory write access operation by the processor
- this bit helps to determine the value written to the byte lying within
- display memory image plane 0.
-
- <=0> Image plane zero is disabled from accepting any set/reset data,
- so long as the plane is able to support this operation.
-
- See {6.06.02} Set/Reset Register.
-
- <=1> Image plane zero is enabled to accept set/reset data, so long as
- the plane is able to support this operation.
-
- See {6.06.02} Set/Reset Register.
-
-
- The precise effect of this bit is determined by the write mode used to
- perform the update operation. There are four different write modes as
- follows:
-
-
- Write Mode 0
- ============
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- Where Set/Reset Enable Image Plane 0 is set <=1>, all eight data path
- bits associated with image plane 0 are set to just one value given by
- the single bit Set/Reset Data Image Plane 0. All other memory planes
- are processed in an identical manner. Four output data paths result,
- each of eight bits width, making a total of 32 bits. These data path
- outputs are then subjected to further processing, before any data are
- actually stored in image memory.
-
- The use of the Set/Reset Enable and Set/Reset Data input is to specify
- a four bit colour value across a single bit position within all planes
- of the image memory, in parallel. In this way, the processor supplied
- data is either used unchanged, is modified partially, or is completely
- ignored when deciding how to process for update. The resulting output
- is used by the logic unit together with the read latch contents. This
- provides extremely powerful colour processing capability when properly
- used. This write mode is probably the most generally used write mode.
-
- A schematic for write mode 0 is available.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- Write Mode 1
- ============
-
- There is no use made of this bit value for write mode 1 operations.
-
- A schematic for write mode 1 is available.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- Write Mode 2
- ============
-
- There is no use made of this bit value for write mode 2 operations.
-
- A schematic for write mode 2 is available.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- Write Mode 3
- ============
-
- There is no use made of this bit value for write mode 3 operations.
-
- A schematic for write mode 3 is available.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Set/Reset Enable Image Plane 1
- ------------------------------
-
- As for Set/Reset Enable Image Plane 0, immediately above.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <2> Set/Reset Enable Image Plane 2
- ------------------------------
-
- As for Set/Reset Enable Image Plane 0, immediately above.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
-
- <3> Set/Reset Enable Image Plane 3
- ------------------------------
-
- As for Set/Reset Enable Image Plane 0, immediately above.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.06.04 Colour Compare Register { 3cfh 02h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.06} Read Map Select Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.09} Colour Don't Care Register.
-
-
- <0> Colour Compare Plane 0
- ----------------------
-
- During multiplane image memory read access operation by the processor,
- this bit can determine the value of the byte representing the result
- returned to the processor.
-
- <=0> Image plane zero is compared with the data value 0, so long as
- the plane is enabled to support this operation.
-
- See {6.06.09} Colour Don't Care Register.
-
- <=0> Image plane zero is compared with the data value 1, so long as
- the plane is enabled to support this operation.
-
- See {6.06.09} Colour Don't Care Register.
-
- The effect of this bit is determined by the read mode used to perform
- the image memory read access operation. Two different read modes are
- provided as follows:
-
-
- Read Mode 0
- ===========
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- When read mode 0 is active, a read operation by the processor returns
- a single byte, which is associated with one of the four image planes. The plan
- The particular image plane is selected by means of a special register
- provided specifically for this purpose.
-
- See {6.06.06} Read Map Select Register.
- See {6.06.07} Graphics Mode Register.
-
- In read mode 0, the Colour Compare Register plays no active role in
- processor read operation so the value of the Colour Compare Plane 0
- bit is irrelevant.
-
-
- Read Mode 1
- ===========
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- It is often required to determine where the border pixels of an area
- are situated, perhaps in order to provide a colour fill function for
- a graphics software package. Usually in such a situation, either of
- the colours associated with the foreground or background are a known
- constant. The business of discovering the border pixels becomes one
- of tracing a region consisting of pixels with a known colour.
-
- There is a way of doing this, using read mode 0 to recover the four
- bytes of colour plane data at a given image memory address. But it
- would then be necessary to change those four bytes into eight pixels
- each of 4 bits. Whilst this is computationally simple, it is a very
- time consuming operation to perform, especially with large images.
-
- This is where read mode 1 can provide assistance. Read mode 1 uses
- a colour match specification to inspect an eight pixel image memory
- address in parallel, producing a colour match bit for each pixel in
- the result byte. A matching colour produces a set bit result.
-
- The match value for any plane can be made irrelevant by using a mask
- value for the plane indicating a colour match don't care. Any don't
- care planes are considered to match under all circumstances. So for
- some colour ranges it is possible to obtain sensible match behaviour
- even though the match result is expressed in a single bit.
-
- See {6.06.07} Graphics Mode Register.
- See {6.06.09} Colour Don't Care Register.
-
-
- <1> Colour Compare Plane 1
- ----------------------
-
- As for Colour Compare Plane 0, immediately above.
-
- See {6.06.06} Read Map Select Register.
- See {6.06.09} Colour Don't Care Register.
-
-
- <2> Colour Compare Plane 2
- ----------------------
-
- As for Colour Compare Plane 0, immediately above.
-
- See {6.06.06} Read Map Select Register.
- See {6.06.09} Colour Don't Care Register.
-
-
- <3> Colour Compare Plane 3
- ----------------------
-
- As for Colour Compare Plane 0, immediately above.
-
- See {6.06.06} Read Map Select Register.
- See {6.06.09} Colour Don't Care Register.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.06.05 Data Rotate Register { 3cfh 03h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.02} Set/Reset Register.
-
-
- <2..0> Data Rotate
- -----------
-
- This binary value specifies the data rotate count for the following
- write modes {0,3}. The rotation is to the right.
-
- There is a description of these modes available with a schematic of
- the data flow.
-
- See {6.06.02} Set/Reset Register.
-
-
- <4..3> Logic Unit Function Code
- ------------------------
-
- This binary field specifies the logic unit function code. There are
- two data path inputs to the logic unit, each of which contains image
- memory plane data for each of the four memory planes. One plane has
- eight data bits associated with it, making 32 bits total for each of
- two input data paths. So the logic unit combines 64 input bits with
- a corresponding output of 32 result bits.
-
- The logic function always takes one input data path to be the memory
- read latches, with the other input depending on the particular write
- mode selected.
-
- The logic unit functions are effective in the following write modes
- {0,2,3} and are assigned as follows:
-
- <=00> NO_OP. No operation, the data passes straight through. No use
- is made of the read latch data input to the logic unit,
- but THE READ LATCHES ARE UPDATED WITH THE DATA.
-
- <=01> AND. Logical AND, bit position for bit position between the
- input data path and the read latch data path.
-
- <=10> OR. Logical OR, bit position for bit position between the
- input data path and the read latch data path.
-
- <=11> XOR. Logical XOR, bit position for bit position between the
- input data path and the read latch data path.
-
- See {6.06.02} Set/Reset Register.
-
-
- <7..5> Reserved. Always <=000>.
- -------------------------
-
-
-
-
- 6.06.06 Read Map Select Register { 3cfh 04h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.04} Colour Compare Register.
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.10.09} CPU Latch Read Back Register.
-
-
-
- <1..0> Read Map Select
- ---------------
-
- The binary value of this field represents the multiplane image memory
- plane from which the processor will read a byte of pixel data when in
- read mode 0. The actual effect depends upon the display image memory
- organisation as follows:
-
-
- Processor Image Memory Access Mapping Select
- =-------------------------------------------
-
- Processor Image Memory Access Mode Select
- = =----------------------------------------
-
- Processor Display Memory Addressing
- = = ===================================------------------
-
-
- 0 0 Text access; odd/even mode; the low order address bit
- selects the pair of planes to access. Even addresses
- select the pair (0,2) and odd addresses (1,3).
-
- In all other respects the memory organisation remains
- multiplane.
-
- Data transfers are by word from the processor in this
- memory mode, with a character code and attribute byte
- sent together. Memory planes 2,3 are write inhibited
- to preserve the character font data in plane 2.
-
- The Read Map Select field bit 0 is not used for this
- memory mode. The remaining bit 1 selects a plane in
- the pair of planes determined by the access address,
- for read mode 0.
-
-
- 0 1 Multiplane access; the planes are written by using a
- write mode and read using a read mode. The plane is
- selected by means of special registers used by these
- read and write modes. This organisation supports 16
- colours, with 8 pixels per byte across 4 planes at a
- single image memory byte address.
-
- Data transfers are single byte from the processor in
- this memory mode.
-
- The Read Map Select field denotes the plane number to
- be read by a read mode 0 access, in this memory mode.
- Planes 0 through 3 are therefore accessible.
-
-
- 1 0 The two low order address bits are the plane address;
- the remaining address bits are shifted down to become
- a byte address into multiplane memory. This supports
- 256 colour packed pixel mode, where a byte represents
- the colour data for a single pixel.
-
- Data transfers are single byte from the processor in
- this memory mode.
-
- All two bits of the Read Map Select field are ignored
- in this memory mode, for read mode 0 access.
-
-
- 1 1 The two low order address bits are the plane address;
- the remaining address bits are shifted down to become
- a byte address into multiplane memory. This supports
- 256 colour packed pixel mode, where a byte represents
- the colour data for a single pixel.
-
- Data transfers are single byte from the processor in
- this memory mode, for read mode 0 access.
-
- All two bits of the Read Map Select field are ignored
- in this memory mode.
-
-
- ---------------------------------------------------------------
-
-
- See {6.04.06} Sequencer Memory Mode Register.
- See {6.06.07} Graphics Mode Register.
-
- This field decides which cpu data latch to access during a cpu latch
- read back operation. Each cpu data latch is associated with an image
- memory plane.
-
- See {6.10.09} CPU Latch Read Back Register.
-
- This field does not have any influence over processor read operations
- in read mode 1. These are colour compare read operations.
-
- See {6.06.04} Colour Compare Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <7..2> Reserved. Always <=000000>.
- ----------------------------
-
-
-
-
- 6.06.07 Graphics Mode Register { 3cfh 05h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.04.04} Map Mask Register.
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.06.02} Set/Reset Register.
- Cross reference with {6.06.03} Enable Set/Reset Register.
- Cross reference with {6.06.04} Colour Compare Register.
- Cross reference with {6.06.05} Data Rotate Register.
- Cross reference with {6.06.06} Read Map Select Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.06.09} Colour Don't Care Register.
- Cross reference with {6.06.10} Bit Mask Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.07.20} Colour Plane Enable Register.
- Cross reference with {6.07.21} Horizontal PEL Panning Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.09} CPU Latch Read Back Register.
-
-
- <1..0> Processor Write Mode
- --------------------
-
- The display may be used in either text mode or graphics mode.
- See {6.06.08} Miscellaneous Register.
-
- There is capability provided to read back the data written to
- the display image memory data latches by the processor.
-
- See {6.10.09} CPU Latch Read Back Register.
-
-
- <=00> Write Mode 0
- ------------
-
- This write mode is used to process absolute colour values, when
- image memory is in multiplane format. There are many possible
- types of image processing operations which can be achieved with
- this write mode, which permits processor modification of any of
- one through eight pixels per single access. The data might be
- stored in any of one to four image memory planes some or all of
- which may be modified simultaneously as the result of one write
- operation by the processor. This write mode is the most often
- used, because of the great flexibility it provides. It is most
- suitable for writing text whilst in graphics mode, which is one
- of the most demanding operations the processor can perform with
- a multiplane image. In this write mode the read latch contents
- have a very important role in either preserving existing memory
- background image content, or in establishing a new background.
-
- However, because there are so many processing operations which
- are carried out in parallel, sometimes considerable thought is
- required to produce the best results from this mode. Otherwise
- it is easy to program simply by ignoring most of the available
- processing power. If this approach is adopted, it is possible
- to implement improved graphics algorithms as they are developed
- provided always that simple functional interfaces are used with
- the graphics software components.
-
- This is an absolute colour processing update operation, whereas
- write mode 3 provides for relative colour update operation.
-
- There is a discussion of write mode 0 available, together with
- a schematic of the data flow invlved.
-
- See {6.06.02} Set/Reset Register.
-
- A discussion of graphics shift register configuration with data
- flow schematics is available.
-
- See {6.04.03} Clocking Mode Register.
- See table below.
- See schematic diagrams below.
-
- The registers used in this mode are as follows.
-
- See {6.04.04} Map Mask Register.
- See {6.06.02} Set/Reset Register.
- See {6.06.03} Enable Set/Reset Register.
- See {6.06.05} Data Rotate Register.
- See {6.06.10} Bit Mask Register.
-
-
- <=01> Write Mode 1
- ------------
-
- Write mode 1 provides the facilities for fast multiplane memory
- image movement and initialisation. This write mode ignores all
- data written by the processor. Instead it uses the associated
- addresses generated by the processor, together with the type of
- memory access (read, write) to control the internal processing
- carried out by the VGA controller. In this manner, great speed
- of processing is achieved, since all internal data paths are 32
- bits wide.
-
- The processing ability possessed by this mode is minimal which
- means that in practise, it is very easy to set up for use. In
- this way, it is a practical mode for use in high speed program
- operation, with important application where large images must
- be updated using predefined image components. Such components
- are generally held in a library, which is located within a part
- of the display image memory which is not displayed directly.
-
- The fast copy ability of this mode can replicate such standard
- image parts wherever they are needed, with low overhead.
-
- There is a discussion of write mode 1 available, together with
- a schematic of the data flow invlved.
-
- See {6.06.02} Set/Reset Register.
-
- The registers used in this mode are as follows.
-
- See {6.04.04} Map Mask Register.
-
-
- <=10> Write Mode 2
- ------------
-
- This mode can write from one upto eight pixels with a processor
- specified colour, when in multiplane image memory format. This
- enables complex colour change image updates to take place where
- the processor must determine colour according to possibly quite
- sophisticated criteria. The read latch contents are important
- in this mode for specifying the image for regions which are not
- directly being modified. The read latches may either be given
- a single value, which is then subsequently used for many write
- operations, or may be initialised immediately prior to a write
- in order to preserve existing image data.
-
- This mode can be used in line drawing where the colour of the
- line must be changed frequently. It can also be used to fill
- an area with colour. As logic operations can be performed in
- this mode, it can find application in image animation.
-
- There is a discussion of write mode 2 available, together with
- a schematic of the data flow invlved.
-
- See {6.06.02} Set/Reset Register.
-
- A discussion of graphics shift register configuration with data
- flow schematics is available.
-
- See {6.04.03} Clocking Mode Register.
- See table below.
- See schematic diagrams below.
-
- The registers used in this mode are as follows.
-
- See {6.04.04} Map Mask Register.
- See {6.06.05} Data Rotate Register.
- See {6.06.10} Bit Mask Register.
-
-
- <=11> Write Mode 3
- ------------
-
- Write mode 3 provides the capability for processing an image
- according to the current colour data existing in that image.
-
- The colour value for each pixel is processed by the logic unit
- and the processor supplied data is then used to determine what
- data source to use for the new pixel colour value. The effect
- is to selectively preserve or update the current pixel colour.
-
- This type of processing is useful for update operations which
- must guarantee that all new image data written must be visible
- no matter what the colour distribution in the existing image.
-
- This is a relative colour processing update operation, whereas
- write mode 0 provides for absolute colour update operation.
-
- There is a discussion of write mode 3 available, together with
- a schematic of the data flow invlved.
-
- See {6.06.02} Set/Reset Register.
-
- A discussion of graphics shift register configuration with data
- flow schematics is available.
-
- See {6.04.03} Clocking Mode Register.
- See table below.
- See schematic diagrams below.
-
- The registers used in this mode are as follows.
-
- See {6.04.04} Map Mask Register.
- See {6.06.02} Set/Reset Register.
- See {6.06.05} Data Rotate Register.
- See {6.06.10} Bit Mask Register.
-
-
- <2> Reserved. Always <=0>.
- -----------------------
-
-
- <3> Processor Read Mode
- -------------------
-
- <=0> Read Mode 0
- -----------
-
- This read mode returns a byte of pixel data from one of the four
- image memory planes in multiplane image format. Each plane has
- responsibility for storing one bit of colour data for each pixel
- so a byte gives the setting of one colour bit over eight pixels.
-
- Sometimes it is useful to read data from just one of the planes,
- so that functionality is provided by read mode 0. Any read will
- load the read latches from each of the four image memory planes
- when read mode 0 is operational. This happens despite the fact
- that only one plane will deliver data to the processor. Latches
- are selected for processor read using a special register.
-
- See {6.06.06} Read Map Select Register.
-
- When the logic unit is used during a write mode, it is possible
- to arrange for the read latches to be updated as a result of a
- NO_OP function code.
-
- See {6.06.02} Set/Reset Register.
-
- There is another discussion of read mode 0 available.
-
- See {6.06.04} Colour Compare Register.
-
-
- <=1> Read Mode 1
- -----------
-
- This read mode provides for deciding on the colour value for a
- group of eight neighbouring pixels. The four colour bits that
- make up each pixel are compared with a predetermined colour.
-
- The result of the comparison process over eight pixels is given
- as an eight bit byte, indicating whether or not the colour was
- present for each pixel.
-
- There are provisions for indicating that certain image planes
- are to be ignored for comparison purposes, and this read mode
- gives a considerable speed advantage for some operations such
- as colour fill. Without read mode 1, colour boundary search
- operations would be extremely slow to execute.
-
- See {6.06.09} Colour Don't Care Register.
-
- Note that the image memory organisation must be multiplane if
- read mode 1 is to function. A processor read using read mode
- 1 will load all four read latches identically with the colour
- compare result. This provides a way of initialising the read
- latches within a single processor instruction.
-
- If the colour don't care register is set to zero, the colour
- compare is guaranteed to succeed, independantly of the pixel
- data. This will generate a full byte result where every bit
- is set to one. In addition the all bits set pattern appears
- in all four read latches. This can be very useful when used
- with a processor instruction which performs an image address
- read access, then performs a corresponding write access. An
- example of this could be:
-
- ;
- ; Demonstrate multiple access to image memory when using
- ; read mode 1 in order to initialise the read latches to
- ; a value of all ones.
- ;
-
- and [bx],al
-
- ;
- ; End example
- ;
-
- In this example, the logical operation uses the image memory
- addressed through register 'bx' for both read and write. In
- reading the image memory, the read latches are filled with 1
- bits, since the colour don't care register is set to zeros.
-
- The processor then combines this all bits set value with the
- value of register 'al', producing no change from that value.
- This value is then sent to the VGA controller using whatever
- write mode is in force which then stores the image memory at
- the same address previously accessed for read.
-
- It is also possible to arrange loading the read latches with 0
- bits, by using a colour don't care register value of all ones.
- It is also necessary to set the colour compare register to one
- particular colour value which is never used. Then all compare
- operations will fail resulting in each read latch being set to
- all zero bits.
-
- Note that there are other ways of initialising the read latch
- registers. It can be useful to write into image memory those
- initial values which will commonly be used. These values can
- then be read prior to any image manipulation. Until the read
- latches are modified by another processor read operation, the
- value they possess remains unchanged. This property provides
- for writing fast executing software, since the problem with a
- separate initialisation on each write is the overhead of data
- bus speed (which is relatively low).
-
- When the logic unit is used during a write mode, it is possible
- to arrange for the read latches to be updated as a result of a
- NO_OP function code.
-
- See {6.06.02} Set/Reset Register.
-
- There is another discussion of read mode 1 available.
-
- See {6.06.04} Colour Compare Register.
-
-
- <4> Graphics Memory Access Mode
- ---------------------------
-
- <=0> Graphics Memory Access Mode. In graphics mode the image memory
- planes respond to addresses from the processor in parallel. In
- this way, all four memory planes can be read or written using a
- single access. The processor data transfer supports only 8 bit
- transfers, so various mechanisms are employed to map the 8 bits
- to each of the four bytes actually accessed. In some cases, it
- is not necessary to perform any mapping of this type at all, as
- the processor is used only to generate an address which is then
- used internally for image manipulation.
-
- The manipulation is specified in advance and all that is needed
- is a stream of processor generated addresses to put the process
- into operation. This type of operation is very fast to execute.
- It is discussed during the description of write mode 1.
-
- See {6.06.02} Set/Reset Register.
-
- Processor Image Memory Access Mapping Select must be set to zero
- for this setting to be effective. See below.
-
- See {6.06.07} Graphics Mode Register.
-
- <=1> Text Memory Access Mode. This affects a data transfer from the
- processor to the image memory such that it is suitable for text
- mode operations. The processor transfers 16 bits per access to
- image memory in text mode. The data consists of a character in
- the current character set together with an attribute byte which
- exterts control over the character presentation on the display.
-
- For text mode display character codes occupy image memory plane
- zero with attribute data occupying plane one. The image memory
- planes are paired (0,1) and (2,3). The Text Memory Access Mode
- directs even address accesses to planes (0,2), with odd address
- accesses directed to planes (1,3). In this way maximum ease of
- access is provided for textual data update. This is sometimes
- termed odd/even mode.
-
- To use this mode effectively it is usual to disable writes to a
- pair of planes so permitting update to a two plane pair.
-
- See {6.04.04} Map Mask Register.
-
- Only processor writes to image memory are affected by this mode.
- That is, image memory organisation continues to be multiplane in
- all respects except as described above during write addressing.
-
-
- This option setting should be reflected in the setting applied within
- the sequencer, Processor Image Memory Access Mode Select. Note these
- bits are of opposite sense.
-
- See {6.04.06} Sequencer Memory Mode Register.
-
-
- <5> Graphics Shift Register Mode
- ----------------------------
-
- <=0> Normal shift register operation. This is only available when
- the Graphics 256 Colour Control is set <=0>. See table below
- for full details.
-
- A number of shift registers can be loaded together at one time
- which affords powerful possibilities. The shift registers can
- change their interconnection when this occurs so as to support
- a number of different types of image generation. See below.
-
- See {6.04.03} Clocking Mode Register.
-
- <=1> The shift registers support 4 colour packed pixel mode. This
- is only available when the Graphics 256 Colour Control is set
- <=0>. See table below for full details.
-
- A number of shift registers can be loaded together at one time
- which affords powerful possibilities. The shift registers can
- change their interconnection when this occurs so as to support
- a number of different types of image generation. See below.
-
- See {6.04.03} Clocking Mode Register.
-
-
- <6> Graphics 256 Colour Control
- ---------------------------
-
- <=0> The Graphics Shift Register Mode, above, controls the operation
- of the shift registers. See table below for full details.
-
- A number of shift registers can be loaded together at one time
- which affords powerful possibilities. The shift registers can
- change their interconnection when this occurs so as to support
- a number of different types of image generation. See below.
-
- See {6.04.03} Clocking Mode Register.
-
- <=1> The shift registers support the 256 colour packed pixel mode so
- the Graphics Shift Register Mode, above, performs no function.
-
- This option connects the shift registers so that 4 bits are sent
- together to a special register, then another 4 bits are received
- by that register, making 8 bits in total. These 8 bits give the
- full colour code needed to represent 256 colours. Since these 8
- bits are assembled from two 4 bit fields, it takes twice as long
- to create each 8 bit colour value as it would take to issue each
- 4 bit colour value. For this reason, the effective frequency of
- the dot clock is halved in this mode. To produce a display with
- equivalent high resolution to a 16 colour multiplane display the
- dot clock frequency must be doubled.
-
- See {6.04.03} Clocking Mode Register.
- See table below for full details.
-
- The internal pixel palette is bypassed in this mode, due to two
- bits being transmitted in sequence from each of the four planes
- output lines. This multiplexing prohibits the possibility that
- the internal colour palette could exert any colour control over
- the display. However each of the shift register outputs should
- be enabled, so that the two bits can be safely transmitted into
- the shift register assembly latches.
-
- See {6.07.20} Colour Plane Enable Register.
- See table below.
- See schematic diagrams below.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
- A number of shift registers can be loaded together at one time
- which affords powerful possibilities. The shift registers can
- change their interconnection when this occurs so as to support
- a number of different types of image generation. See below.
-
- See {6.04.03} Clocking Mode Register.
-
-
- <7> Reserved. Always <=0>.
- -----------------------
-
-
-
-
- Shift Register Mode Control Summary
- ===================================
-
-
- Graphics 256 Colour Control
- =--------------------------
-
-
- Graphics Shift Register Mode
- = =---------------------------
-
-
- Colour Output Bit Plane Number
- = = =-----------------------------
-
-
- Shift Register Operation Specification
- = = = ======================================----------------
-
-
- = = = shift direction ------------------> [output bit]
-
-
- Bit 0 Bit 2 Bit 4 Bit 6
- = = = ====- ====- ====- ====-
-
- Bit 1 Bit 3 Bit 5 Bit 7
- = = = ====- ====- ====- ====-
-
-
- = = = ==== ==== ==== ==== ==== ==== ==== ====
-
-
- -------------------- multiplane 16 colour mode ---------------------
-
- 0 0 0 p0b0 p0b1 p0b2 p0b3 p0b4 p0b5 p0b6 p0b7
-
- 1 p1b0 p1b1 p1b2 p1b3 p1b4 p1b5 p1b6 p1b7
-
- 2 p2b0 p2b1 p2b2 p2b3 p2b4 p2b5 p2b6 p2b7
-
- 3 p3b0 p3b1 p3b2 p3b3 p3b4 p3b5 p3b6 p3b7
-
-
- -------------------- packed pixel 4 colour mode --------------------
-
- 0 1 0 p1b0 p1b2 p1b4 p1b6 p0b0 p0b2 p0b4 p0b6
-
- 1 p1b1 p1b3 p1b5 p1b7 p0b1 p0b3 p0b5 p0b7
-
- 2 p3b0 p3b2 p3b4 p3b6 p2b0 p2b2 p2b4 p2b6
-
- 3 p3b1 p3b3 p3b5 p3b7 p2b1 p2b3 p2b5 p2b7
-
-
- -------------------- packed pixel 256 colour mode ------------------
-
- 1 0 0 p3b0 p3b4 p2b0 p2b4 p1b0 p1b4 p0b0 p0b4
-
- 1 p3b1 p3b5 p2b1 p2b5 p1b1 p1b5 p0b1 p0b5
-
- 2 p3b2 p3b6 p2b2 p2b6 p1b2 p1b6 p0b2 p0b6
-
- 3 p3b3 p3b7 p2b3 p2b7 p1b3 p1b7 p0b3 p0b7
-
-
- -------------------- packed pixel 256 colour mode ------------------
-
- 1 1 0 p3b0 p3b4 p2b0 p2b4 p1b0 p1b4 p0b0 p0b4
-
- 1 p3b1 p3b5 p2b1 p2b5 p1b1 p1b5 p0b1 p0b5
-
- 2 p3b2 p3b6 p2b2 p2b6 p1b2 p1b6 p0b2 p0b6
-
- 3 p3b3 p3b7 p2b3 p2b7 p1b3 p1b7 p0b3 p0b7
-
-
- ------------------------------------------------------------------
-
-
- When the shift registers are not loaded every character clock, they
- are chained together such that the output from the preceeding shift
- register becomes the input to that of the following shift register.
-
- See {6.04.03} Clocking Mode Register.
-
- This organisation changes depending upon the shift register mode, so
- that monochrome bit map, 4 colour packed pixel and 256 colour packed
- pixel displays may be supported. This organisation change takes the
- individual shift register bits and changes their interconnections so
- that the different functionality required can be supported.
-
- There are some important consequences of changes to the organisation
- of the shift register bits. From the diagrams below it will be seen
- that in the rearranged modes, various output bits are not used. The
- deselection of these bits is under control of a special register for
- just this purpose. A deselected bit becomes a constant zero output,
- which is necessary to ensure stable indexing into the colour tables.
-
- See {6.07.20} Colour Plane Enable Register.
-
- The various organisations are detailed below, in diagramatic form.
-
-
-
-
- Individual Shift Register Connection, Multiplane 16 colour mode
- ===============================================================
-
-
-
-
- [Display Address]
- |
- |
- |
- | [Load Clock] -- derived from character clock
- | |
- | |
- | |
- | | [Shift Clock] -- dot clock
- | | |
- | | |
- | | |
- | | sc..........................................
- | | | | _______
- | | | Memory Plane 3 |...>...Shift 3
- | lc...................>.| [plane 3, bit 7]...........>.| [7]
- | | | | [plane 3, bit 6].........>...| [6]
- | | | | [plane 3, bit 5]...........>.| [5]
- da......................>.| [plane 3, bit 4].........>...| [4]
- | | | | [plane 3, bit 3]...........>.| [3]
- | | | | [plane 3, bit 2].........>...| [2]
- | | | | [plane 3, bit 1]...........>.| [1]
- | | | | [plane 3, bit 0].........>...| [0]
- | | | |
- | | | |
- | | sc.................................... |
- | | | | _______ |
- | | | Memory Plane 2 |...>...Shift 2 |
- | lc.............>.| [plane 2, bit 7]...........>.| [7] |
- | | | | [plane 2, bit 6].........>...| [6] |
- | | | | [plane 2, bit 5]...........>.| [5] |
- da................>.| [plane 2, bit 4].........>...| [4] |
- | | | | [plane 2, bit 3]...........>.| [3] |
- | | | | [plane 2, bit 2].........>...| [2] |
- | | | | [plane 2, bit 1]...........>.| [1] |
- | | | | [plane 2, bit 0].........>...| [0] |
- | | | | |
- | | | | |
- | | sc.............................. | |
- | | | | _______ | |
- | | | Memory Plane 1 |...>...Shift 1 | |
- | lc.......>.| [plane 1, bit 7]...........>.| [7] | |
- | | | | [plane 1, bit 6].........>...| [6] | |
- | | | | [plane 1, bit 5]...........>.| [5] | |
- da..........>.| [plane 1, bit 4].........>...| [4] | |
- | | | | [plane 1, bit 3]...........>.| [3] | |
- | | | | [plane 1, bit 2].........>...| [2] | |
- | | | | [plane 1, bit 1]...........>.| [1] | |
- | | | | [plane 1, bit 0].........>...| [0] | |
- | | | | | |
- | | | | | |
- | | sc........................ | | |
- | | | _______ | | |
- | | Memory Plane 0 |...>...Shift 0 | | |
- | lc.>.| [plane 0, bit 7]...........>.| [7] | | |
- | | [plane 0, bit 6].........>...| [6] | | |
- | | [plane 0, bit 5]...........>.| [5] | | |
- da....>.| [plane 0, bit 4].........>...| [4] | | |
- | [plane 0, bit 3]...........>.| [3] | | |
- | [plane 0, bit 2].........>...| [2] | | |
- | [plane 0, bit 1]...........>.| [1] | | |
- | [plane 0, bit 0].........>...| [0] | | |
- | | | |
- | | | |
- | | | |
- | Plane | Plane
- | 1 Out | 3 Out
- | |
- Plane Plane
- 0 Out 2 Out
-
- ===========================
-
- 16 colour output
- delivered at full
- dot clock frequency
-
- ===========================
-
-
- Note each of the output bits are associated with a particular image
- plane and each of these shift register output bits can individually
- be enabled or disabled. This control is exerted by means of a zero
- bit substitution for the data bit that would normally be output. A
- specially appointed control register is provided for this purpose.
-
- See {6.07.20} Colour Plane Enable Register.
-
-
- -------------------------------------------------------------------
-
-
-
-
- Individual Shift Register Connection, Packed Pixel 2 colour mode
- ================================================================
-
-
-
-
- [Display Address]
- |
- |
- |
- | [Load Clock] -- derived from character clock
- | |
- | |
- | |
- | | [Shift Clock] -- dot clock
- | | |
- | | |
- | | |
- | | sc..........................................
- | | | | ________
- | | | Memory Plane 3 |...>...Shift 3
- | lc...................>.| [plane 3, bit 7]...........>.| [7]
- | | | | [plane 3, bit 6].........>...| [6]
- | | | | [plane 3, bit 5]...........>.| [5]
- da......................>.| [plane 3, bit 4].........>...| [4]
- | | | | [plane 3, bit 3]...........>.| [3]
- | | | | [plane 3, bit 2].........>...| [2]
- | | | | [plane 3, bit 1]...........>.| [1]
- | | | | [plane 3, bit 0].........>...| [0]
- | | | |
- | | | |
- | | | ......|
- | | sc.................................... | |
- | | | | ___|____ |
- | | | Memory Plane 2 |...>...Shift 2 |
- | lc.............>.| [plane 2, bit 7]...........>.| [7] |
- | | | | [plane 2, bit 6].........>...| [6] |
- | | | | [plane 2, bit 5]...........>.| [5] |
- da................>.| [plane 2, bit 4].........>...| [4] |
- | | | | [plane 2, bit 3]...........>.| [3] |
- | | | | [plane 2, bit 2].........>...| [2] |
- | | | | [plane 2, bit 1]...........>.| [1] |
- | | | | [plane 2, bit 0].........>...| [0] |
- | | | | |
- | | | | |
- | | | ......| |
- | | sc.............................. | | |
- | | | | ___|____ | |
- | | | Memory Plane 1 |...>...Shift 1 | |
- | lc.......>.| [plane 1, bit 7]...........>.| [7] | |
- | | | | [plane 1, bit 6].........>...| [6] | |
- | | | | [plane 1, bit 5]...........>.| [5] | |
- da..........>.| [plane 1, bit 4].........>...| [4] | |
- | | | | [plane 1, bit 3]...........>.| [3] | |
- | | | | [plane 1, bit 2].........>...| [2] | |
- | | | | [plane 1, bit 1]...........>.| [1] | |
- | | | | [plane 1, bit 0].........>...| [0] | |
- | | | | | |
- | | | | | |
- | | | ......| | |
- | | sc........................ | | | |
- | | | ___|____ | | |
- | | Memory Plane 0 |...>...Shift 0 | | |
- | lc.>.| [plane 0, bit 7]...........>.| [7] | | |
- | | [plane 0, bit 6].........>...| [6] | | |
- | | [plane 0, bit 5]...........>.| [5] | | |
- da....>.| [plane 0, bit 4].........>...| [4] | | |
- | [plane 0, bit 3]...........>.| [3] | | |
- | [plane 0, bit 2].........>...| [2] | | |
- | [plane 0, bit 1]...........>.| [1] | | |
- | [plane 0, bit 0].........>...| [0] | | |
- | | | |
- | | | |
- | | | |
- | Plane | Plane
- | 1 Out | 3 Out
- | [Not ] | [Not ]
- | [Used] | [Used]
- | |
- | Plane
- | 2 Out
- | [Not ]
- | [Used]
- |
- Plane
- 0 Out
-
- ==========================
-
- Monochrome Output
- delivered at full
- dot clock frequency
-
- ==========================
-
-
- Note each of the output bits are associated with a particular image
- plane and each of these shift register output bits can individually
- be enabled or disabled. This control is exerted by means of a zero
- bit substitution for the data bit that would normally be output. A
- specially appointed control register is provided for this purpose.
-
- See {6.07.20} Colour Plane Enable Register.
-
-
- -------------------------------------------------------------------
-
-
-
-
- Individual Shift Register Connection, Packed Pixel 4 colour mode
- ================================================================
-
-
-
-
- [Display Address]
- |
- |
- |
- | [Load Clock] -- derived from character clock
- | |
- | |
- | |
- | | [Shift Clock] -- dot clock
- | | |
- | | |
- | | |
- | | sc..........................................
- | | | | ________
- | | | Memory Plane 3 |...>...Shift 3
- | lc...................>.| [plane 3, bit 7]...........>.| [7]
- | | | | [plane 3, bit 6].........>...| [6] |
- | | | | [plane 3, bit 5]...........>.| | [5]
- da......................>.| [plane 3, bit 4].........>...| [4] |
- | | | | [plane 3, bit 3]...........>.| | [3]
- | | | | [plane 3, bit 2].........>...| [2] |
- | | | | [plane 3, bit 1]...........>.| | [1]
- | | | | [plane 3, bit 0].........>...| [0] |
- | | | | |
- | | | | |
- | | | ......| |
- | | | | |
- | | | | ......|
- | | | | |
- | | sc.................................... | |
- | | | | ___|__|_
- | | | Memory Plane 2 |...>...Shift 2
- | lc.............>.| [plane 2, bit 7]...........>.| | [7]
- | | | | [plane 2, bit 6].........>...| [6] |
- | | | | [plane 2, bit 5]...........>.| | [5]
- da................>.| [plane 2, bit 4].........>...| [4] |
- | | | | [plane 2, bit 3]...........>.| | [3]
- | | | | [plane 2, bit 2].........>...| [2] |
- | | | | [plane 2, bit 1]...........>.| | [1]
- | | | | [plane 2, bit 0].........>...| [0] |
- | | | | |
- | | | | |
- | | | | |
- | | | ......e |
- | | | | | |
- | | | | | |
- | | | | e |
- | | | | ......o...
- | | | | | e |
- | | | | | | |
- | | sc.............................. | | | |
- | | | | ___|__|_ | |
- | | | Memory Plane 1 |...>...Shift 1 | |
- | lc.......>.| [plane 1, bit 7]...........>.| | [7] | |
- | | | | [plane 1, bit 6].........>...| [6] | | |
- | | | | [plane 1, bit 5]...........>.| | [5] | |
- da..........>.| [plane 1, bit 4].........>...| [4] | | |
- | | | | [plane 1, bit 3]...........>.| | [3] | |
- | | | | [plane 1, bit 2].........>...| [2] | | |
- | | | | [plane 1, bit 1]...........>.| | [1] | |
- | | | | [plane 1, bit 0].........>...| [0] | | |
- | | | | | | |
- | | | | | | |
- | | | ......| | | |
- | | | | | | |
- | | | | ......| | |
- | | | | | | |
- | | sc........................ | | | |
- | | | ___|__|_ | |
- | | Memory Plane 0 |...>...Shift 0 | |
- | lc.>.| [plane 0, bit 7]...........>.| | [7] | |
- | | [plane 0, bit 6].........>...| [6] | | |
- | | [plane 0, bit 5]...........>.| | [5] | |
- da....>.| [plane 0, bit 4].........>...| [4] | | |
- | [plane 0, bit 3]...........>.| | [3] | |
- | [plane 0, bit 2].........>...| [2] | | |
- | [plane 0, bit 1]...........>.| | [1] | |
- | [plane 0, bit 0].........>...| [0] | | |
- | | | |
- | | | |
- ..........................| | | |
- | | | |
- | ............| | Plane
- | | | 3 Out
- | | | 2 Out
- | | | ODD
- | | | [Not ]
- | | | [Used]
- | | |
- | | Plane
- | | 3 Out
- | | 2 Out
- | | EVEN
- | | [Not ]
- | | [Used]
- | |
- Plane Plane
- 1 Out 1 Out
- 0 Out 0 Out
- EVEN ODD
-
-
- ==========================
-
- 4 colour output
- delivered at full
- dot clock frequency
-
- ==========================
-
-
- Note each of the output bits are associated with a particular image
- plane and each of these shift register output bits can individually
- be enabled or disabled. This control is exerted by means of a zero
- bit substitution for the data bit that would normally be output. A
- specially appointed control register is provided for this purpose.
-
- See {6.07.20} Colour Plane Enable Register.
-
-
- -------------------------------------------------------------------
-
-
-
-
- Individual Shift Register Connection, Packed Pixel 256 colour mode
- ==================================================================
-
-
-
-
- [Display Address]
- |
- |
- |
- | [Load Clock] -- derived from character clock
- | |
- | |
- | |
- | | [Shift Clock] -- dot clock
- | | |
- | | |
- | | |
- | | sc..........................
- | | | | ______________
- | | | Memory Plane 3 |...>...Shift 3
- | lc...>.| [plane 3, bit 0]...........>.|..........[0]
- | | | | [plane 3, bit 1].........>...|.......[1] |
- | | | | [plane 3, bit 2]...........>.|....[2] | |
- da......>.| [plane 3, bit 3].........>...|.[3] | | |
- | | | | [plane 3, bit 4]...........>.|..|..|..|.[4]
- | | | | [plane 3, bit 5].........>...|..|..|.[5] |
- | | | | [plane 3, bit 6]...........>.|..|.[6] | |
- | | | | [plane 3, bit 7].........>...|.[7] | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | sc.......................... | | | |
- | | | | ___|__|__|__|_
- | | | Memory Plane 2 |...>...Shift 2 | |
- | lc...>.| [plane 2, bit 0]...........>.|..|..|..|.[0]
- | | | | [plane 2, bit 1].........>...|..|..|.[1] |
- | | | | [plane 2, bit 2]...........>.|..|.[2] | |
- da......>.| [plane 2, bit 3].........>...|.[3] | | |
- | | | | [plane 2, bit 4]...........>.|..|..|..|.[4]
- | | | | [plane 2, bit 5].........>...|..|..|.[5] |
- | | | | [plane 2, bit 6]...........>.|..|.[6] | |
- | | | | [plane 2, bit 7].........>...|.[7] | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | sc.......................... | | | |
- | | | | ___|__|__|__|_
- | | | Memory Plane 1 |...>...Shift 1 | |
- | lc...>.| [plane 1, bit 0]...........>.|..|..|..|.[0]
- | | | | [plane 1, bit 1].........>...|..|..|.[1] |
- | | | | [plane 1, bit 2]...........>.|..|.[2] | |
- da......>.| [plane 1, bit 3].........>...|.[3] | | |
- | | | | [plane 1, bit 4]...........>.|..|..|..|.[4]
- | | | | [plane 1, bit 5].........>...|..|..|.[5] |
- | | | | [plane 1, bit 6]...........>.|..|.[6] | |
- | | | | [plane 1, bit 7].........>...|.[7] | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | | | | | |
- | | sc.......................... | | | |
- | | | | ___|__|__|__|_
- | | | Memory Plane 0 |...>...Shift 0 | |
- | lc...>.| [plane 0, bit 0]...........>.|..|..|..|.[0]
- | | | [plane 0, bit 1].........>...|..|..|.[1] |
- | | | [plane 0, bit 2]...........>.|..|.[2] | |
- da......>.| [plane 0, bit 3].........>...|.[3] | | |
- | | [plane 0, bit 4]...........>.|..|..|..|.[4]
- | | [plane 0, bit 5].........>...|..|..|.[5] |
- | | [plane 0, bit 6]...........>.|..|.[6] | |
- | | [plane 0, bit 7].........>...|.[7] | | |
- | | | | |
- | | | | |
- | | | | |
- | | | | |
- | ___________________
- |
- | these are the 4
- | plane output bits
- | which have little
- | significance for
- | 256 colour mode
- | (see note below)
- | ___________________
- | | | | |
- | | | | |
- | | | | |
- | | | | |
- ____|______ | | | |
- Divide by 2 | | | |
- | ODD.....|.......................... | | | |
- | EVEN....|..... | | | | |
- | | | | | |
- | | | | | |
- | ...............|.....a | | |
- | | ............|.....|..b | |
- | | | .........|.....|..|..c |
- | | | | ......|.....|..|..|..d
- | | | | | | | | | |
- | | | | | | | | | |
- | | | | | | | | | |
- | | | | | | | | | |
- | _|__|__|__|_ | _|__|__|__|_
- | |Latch 4 bits | |Latch 4 bits
- |.>.|making 8 bit |.>.|making 8 bit
- |256 colours |256 colours
- <7><6><5><4> <3><2><1><0>
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
-
- =================================
-
- 256 colour output
- delivered at only half
- the dot clock frequency
-
- =================================
-
-
-
-
- Important note: the concept of output bits corresponding with each
- display memory image plane is redundant in 256 colour packed pixel
- mode. Two distinct colour bits flow from each of four output bits
- during the two dot clock period necessary to build an 8 bit colour
- value. For this reason, the internal colour palette cannot effect
- any colour control for 256 colour packed pixel modes. So that each
- of the four shift register output bits can deliver two colour bits
- making a total of 8 bits per pixel the colour plane outputs should
- all be enabled during 256 colour modes.
-
- See {6.07.20} Colour Plane Enable Register.
-
-
- -------------------------------------------------------------------
-
-
-
-
- 6.06.08 Miscellaneous Register { 3cfh 06h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.04.05} Character Map Select Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.05} Mode Control Register 1.
-
-
- <0> Display Generation Mode
- -----------------------
-
- <=0> Text Mode
- ---------
-
- Hardware character generation is invoked for display generation.
- There is no capability to generate graphics in the usual manner
- but a software technique can be used, giving a limited graphics
- capability. The technique depends upon assigning characters to
- a display area, then re-writing the character fonts assigned to
- those characters. In this manner a limited graphics capability
- can be supported within a relatively small area of the display.
-
- The text mode display stores character codes in memory plane 0,
- with their associated attribute bytes in plane 1. The hardware
- expects character font data to be stored at specified addresses
- in plane 2. Memory plane 3 is unused in this display mode.
-
- The main characteristics of this mode are high speed operation,
- with very low associated host processor overhead. A number of
- separate pages of text can be maintained, and switched between
- at high speed. This is the ideal mode to employ where no true
- graphics capability is required, other than that provided with
- the specially reserved graphics drawing characters. Two fonts
- can be used within one display screen, each font consisting of
- 256 characters in total. User defined fonts can be used, when
- occasion demands.
-
- See {6.04.03} Clocking Mode Register.
- See {6.04.05} Character Map Select Register.
- See {6.05.22} Underline Location Register.
-
- <=1> Graphics Mode
- -------------
-
- The display will be generated with reference to an image memory,
- organised as a collection of pixel data. There is no capability
- for the support of hardware text generation, but software can be
- written to support multiple character fonts and any size of font
- necessary for the application.
-
- Display image memory organisation is dependant upon the range of
- colours available for definition of a pixel. The principle mode
- options include:
-
-
- 1. Multiplane 16 Colour
- --------------------
-
- The display memory is arranged as four parallel planes
- each of which holds data for eight pixels by splitting
- four colour bits across four planes. Each plane gives
- access to a single byte when presented with an address
- so with parallel address spaces, each access returns 4
- bytes. The 32 bits specify 4 bits of colour data, for
- each of eight pixels.
-
- See {6.06.07} Graphics Mode Register.
-
- 2. Packed pixel Monochrome
- -----------------------
-
- The display memory is arranged as a linear array which
- is addressed in a manner corresponding directly to the
- screen pixel display. One bit per pixel specifies any
- colour required, from a large available palette. This
- choice is normally restricted by making black the fore
- ground colour. The display image is easily managed as
- it is of small size. A large number of distinct pages
- can be maintained and quickly switched for one another
- which is very useful for hierarchical design systems.
-
- See {6.06.07} Graphics Mode Register.
-
- 3. Packed Pixel 4 Colour
- ---------------------
-
- This display mode requires double the amount of memory
- compared with monochrome mode, but provides 4 colours,
- which can be much more flexible in some applications.
-
- Each pixel is represented by two neighbouring bits, so
- four pixels are collected together in one byte. There
- are special hardware capabilities available, to decode
- this special colour representation.
-
- Since images are still very compact large displays can
- be manipulated without great memory overhead; a number
- of distinct pages can be held in memory and swapped at
- high speed.
-
- See {6.06.07} Graphics Mode Register.
-
- 4. Packed Pixel 256 Colour
- -----------------------
-
- This display mode ensures the highest image resolution
- and complexity. As a result the display memory needed
- is larger than with any other mode. This can mean the
- quantity of data accessed when changing an image is an
- important determinant of processing speed. A pixel is
- represented by a single byte of data. In this way, it
- is the simplest mode, from the point of view of memory
- organisation.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Memory Plane Pairing Control
- ----------------------------
-
- <=0> No plane pairing. Address bit 0 is not replaced.
-
- <=1> Memory planes are paired. The processor address bit 0 gives the
- plane pair to access. Even addresses access planes (0,2) whilst
- odd addresses access planes (1,3). Address bit 0 is replaced by
- a higher order address bit.
-
- This is similar to Processor Image Memory Access Mode Select.
- See {6.04.06} Sequencer Memory Mode Register.
-
-
- <3..2> Memory Map Mode
- ---------------
-
- This field specifies the mapping of the display image memory into the
- processor memory address space. This changes the range of processor
- addresses which are recognised as being display memory references.
-
- <=00> Host processor address range is {a0000h .. bffffh}.
-
- <=01> Host processor address range is {a0000h .. affffh}.
-
- High resolution graphics controls require this processor map
- for correct operation {Trident 8900 only}.
-
- See {6.10.05} Mode Control Register 1.
-
- <=10> Host processor address range is {b0000h .. b7fffh}.
-
- <=11> Host processor address range is {b8000h .. bffffh}.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.06.09 Colour Don't Care Register { 3cfh 07h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.04} Colour Compare Register.
- Cross reference with {6.06.06} Read Map Select Register.
- Cross reference with {6.06.07} Graphics Mode Register.
-
-
- <0> Colour Don't Care Plane 0
- -------------------------
-
- During multiplane image memory read access operation by the processor,
- this bit can determine the value of the byte representing the result
- returned to the processor.
-
- <=0> Image plane zero data is not actively used for colour comparison
- rather it is considered to have generated an unconditional match
- with the colour data value specified, assuming read mode 1.
-
- See {6.06.04} Colour Compare Register.
-
- <=1> Image plane zero is actively compared with the colour data value
- specified. The result depends directly on data from this plane,
- assuming read mode 1.
-
- See {6.06.04} Colour Compare Register.
-
- The effect of this bit is determined by the read mode used to perform
- the image memory read access operation. Two different read modes are
- provided as follows:
-
-
- Read Mode 0
- ===========
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- When read mode 0 is active, a read operation by the processor returns
- a single byte, which is associated with one of the four image planes. The plan
- The particular image plane is selected by means of a special register
- provided specifically for this purpose.
-
- See {6.06.06} Read Map Select Register.
- See {6.06.07} Graphics Mode Register.
-
- In read mode 0, the Colour Compare Register plays no active role in
- processor read operation so the value of the Colour Compare Plane 0
- bit and the Colour Don't Care Plane 0 bit is irrelevant.
-
-
- Read Mode 1
- ===========
-
- At any single address, each image plane stores one eight bit byte so
- providing for 32 bits total storage spread across four planes. Each
- bit position on each of the four planes provides a four bit value so
- that 16 colours can be represented. In this way, eight neighbouring
- pixels are completely described by the 32 bits at a single address.
- This convention for image memory organisation is termed multiplane.
-
- It is often required to determine where the border pixels of an area
- are situated, perhaps in order to provide a colour fill function for
- a graphics software package. Usually in such a situation, either of
- the colours associated with the foreground or background are a known
- constant. The business of discovering the border pixels becomes one
- of tracing a region consisting of pixels with a known colour.
-
- There is a way of doing this, using read mode 0 to recover the four
- bytes of colour plane data at a given image memory address. But it
- would then be necessary to change those four bytes into eight pixels
- each of 4 bits. Whilst this is computationally simple, it is a very
- time consuming operation to perform, especially with large images.
-
- This is where read mode 1 can provide assistance. Read mode 1 uses
- a colour match specification to inspect an eight pixel image memory
- address in parallel, producing a colour match bit for each pixel in
- the result byte. A matching colour produces a set bit result.
-
- The match value for any plane can be made irrelevant by using a mask
- value for the plane indicating a colour match don't care. Any don't
- care planes are considered to match under all circumstances. So for
- some colour ranges it is possible to obtain sensible match behaviour
- even though the match result is expressed in a single bit.
-
- See {6.06.04} Colour Compare Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Colour Don't Care Plane 1
- -------------------------
-
- As for Colour Don't Care Plane 0, immediately above.
-
- See {6.06.04} Colour Compare Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <2> Colour Don't Care Plane 2
- -------------------------
-
- As for Colour Don't Care Plane 0, immediately above.
-
- See {6.06.04} Colour Compare Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <3> Colour Don't Care Plane 3
- -------------------------
-
- As for Colour Don't Care Plane 0, immediately above.
-
- See {6.06.04} Colour Compare Register.
- See {6.06.07} Graphics Mode Register.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.06.10 Bit Mask Register { 3cfh 08h R/W }
- ======= ===================================================
-
-
- Cross reference with {6.06.02} Set/Reset Register.
-
-
- <0> Update Value Source Bit 0
- -------------------------
-
- <=0> This bit position in all write enabled planes will be sourced from
- the current read latch contents associated with those planes. The
- interpretation of this bit can be simplified when the read latches
- have been loaded with the original image data. In that case, this
- option signifies that this pixel number will be write inhibited in
- all four image memory planes.
-
- This bit is used in write modes (0, 2, 3).
-
- See {6.06.02} Set/Reset Register.
-
- <=1> This bit position in all write enabled planes will be sourced from
- the logic unit output data path associated with those planes. The
- interpretation of this bit can be simplified when the read latches
- have been loaded with the original image data. In that case, this
- option signifies that this pixel number will be enabled for write,
- across all the four image memory planes.
-
- This bit is used in write modes (0, 2, 3).
-
- See {6.06.02} Set/Reset Register.
-
-
- <1> Update Value Source Bit 1
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <2> Update Value Source Bit 2
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <3> Update Value Source Bit 3
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <4> Update Value Source Bit 4
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <5> Update Value Source Bit 5
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <6> Update Value Source Bit 6
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
- <7> Update Value Source Bit 7
- -------------------------
-
- This bit is used in write modes (0, 2, 3).
-
- See Update Value Source Bit 0, immediately above.
- See {6.06.02} Set/Reset Register.
-
-
-
-
- 6.07 Register specifications: Attribute Controller
- ==== =============================================
-
-
- 6.07.01 Attribute Address Register { 3c0h/I/W 3c0h/R --- R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.09.04} Input Status Register One.
- Cross reference with {6.10.10} Attribute State Read Back Register.
- Cross reference with {6.10.11} Attribute Index Read Back Register.
-
-
- <4..0> Attribute Address
- -----------------
-
- The attribute controller address register defines the index number of
- the register in the internal register array. All reads and writes to
- the attribute controller are made to this selected register.
-
- Port 3c0h is used for writes to both the Attribute Address Register,
- and to the selected register array index. Port 3c0h is also used to
- read the Attribute Address Register. The selected internal register
- index can always be read using port 3c1h.
-
- In this scheme, port 3c0h is used for writing the index value for the
- internal register access control, and also for writing the value into
- the selected register. Obviously there must be a means for resolving
- this ambiguity of write access.
-
- There is an internal state which chooses whether to write the index
- value, or the register being indexed. This state can be reset with
- a read to port 3?ah {where ? represents either hex 'b' or hex 'd'},
- so that the next write is to the Attribute Address Register rather
- than to an indexed internal register.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.09.04} Input Status Register One.
-
- Having written the Attribute Address (that is, the register index),
- successive writes are to the indexed register, then to the value of
- the index, and so on, alternately. This is very useful when a word
- is written to port 3c0h, since the first byte controls the index of
- the register, which is then written into by the second byte.
-
- The internal register index value can be obtained, as can the state
- which determines index access or register access for write purposes.
-
- See {6.10.10} Attribute State Read Back Register.
- See {6.10.11} Attribute Index Read Back Register.
-
- Note that no official documentation describes the existance of this
- decode of port 3c1h for such write purposes. However, the hardware
- does respond correctly in this manner. This is a standard feature.
-
-
- <5> Palette Control
- ---------------
-
- <=0> Disable the generation of a video signal, permitting processor
- access to the attribute controller colour registers. Note the
- display will become unstable, should this option be set whilst
- the active image is being generated. For this reason vertical
- retrace should be active for the duration of this setting.
-
- <=1> Enable video signal generation and prevent processor access to
- the attribute controller colour registers.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- 6.07.02 Palette Register 00 { 3c0h/I/W 3c1h/R 00h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.07.03} Palette Register 01.
- Cross reference with {6.07.04} Palette Register 02.
- Cross reference with {6.07.05} Palette Register 03.
- Cross reference with {6.07.06} Palette Register 04.
- Cross reference with {6.07.07} Palette Register 05.
- Cross reference with {6.07.08} Palette Register 06.
- Cross reference with {6.07.09} Palette Register 07.
- Cross reference with {6.07.10} Palette Register 08.
- Cross reference with {6.07.11} Palette Register 09.
- Cross reference with {6.07.12} Palette Register 10.
- Cross reference with {6.07.13} Palette Register 11.
- Cross reference with {6.07.14} Palette Register 12.
- Cross reference with {6.07.15} Palette Register 13.
- Cross reference with {6.07.16} Palette Register 14.
- Cross reference with {6.07.17} Palette Register 15.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.07.20} Colour Plane Enable Register.
- Cross reference with {6.07.22} Colour Select Register.
- Cross reference with {6.08.01} DAC Pixel Mask Register.
- Cross reference with {6.08.05} DAC Data Register.
-
-
- <5..0> Colour Value
- ------------
-
- This binary field expresses the value of an index into the DAC colour
- table. {DAC is an acronym for Digital to Analogue Converter.} A DAC
- converts eight bit digital colour information to analogue red, green,
- blue information from which all required colours can be mixed. There
- is a great deal of context surrounding colour generation, which needs
- to be understood before the palette operation can become clear.
-
- The manner in which pixel colour is converted into display colour is
- actually non-trivial, offering powerful control facilities which are
- suitable for high speed animation. We now describe all the features
- for colour control of an image working forewards from the pixel data
- and backwards from the displayed colours.
-
- The size of a pixel in bits determines the range of colours which can
- be generated within any displayed image. However, the actual colours
- displayed can be composed from a very wide range of possible colours.
-
- To see how this can be, we look at the DACs which generate colour out
- to the display unit. Each DAC accepts 8 bits of digital code thereby
- producing 8 bits of analogue signal into one of the three colour guns
- in the display tube. So all combinations of three 8 bit colours will
- give a colour spectrum of 24 bits resolution. This gives a full range
- of 16_777_216 colours in total.
-
- The three DAC units accept 8 bit digital colour code from a specially
- designed memory unit, which stores for each of 256 addresses, 24 bits
- of colour data. Each 24 bit block contains three groups of eight bit
- colour data, associated respectively with the red green and blue DAC.
- The 256 addresses can be fully determined with an 8 bit digital code.
-
- The 256 colour memory unit is termed an external colour palette. It
- is this palette which governs the true colours actually sent into the
- display unit. Since the external colour palette converts 8 bit codes
- into displayed colours, it is clear that no display can use more than
- 256 distinct colours.
-
- See {6.08.05} DAC Data Register.
-
- There is another colour palette memory unit, which provides for just
- 16 separate addresses. This colour palette is the internal palette,
- which is located within the VGA controller. It is distinguished from
- the external colour palette by being termed simply the colour palette.
- It stores 6 bits of colour data for each of the 16 addresses. Only 4
- bits of digital code are needed to completely represent 16 addresses.
-
- Display image memory is split into four separately accessible planes,
- each of which is associated with a shift register, which presents bit
- data to an output bit corresponding with the same plane. In this way
- data from image memory is converted into a serial data stream so that
- parallel bits in the stream specify a colour to display.
-
- See {6.06.07} Graphics Mode Register.
-
- These parallel bits are used to index the colour palette, which gives
- the 4 bits of address needed to completely range over every entry the
- colour palette contains. As a result of this, the colour palette can
- deliver a 6 bit code output. This 6 bit code is combined with 2 bits
- from a special register to make the 8 bit code needed by the external
- colour palette to generate real colour signals into the display unit.
-
- See {6.07.22} Colour Select Register.
-
- Note that the number of displayed colours is now constrained to 4 bit
- colour specified by pixel representation, rather than the 8 bits used
- as input to the external colour palette.
-
- That is the overview. In practise, things can be more involved.
-
- In multiplane 16 colour mode, the situation is altered slightly by
- virtue of there being a choice of formation of the 8 bit code sent
- into the external colour palette. The shift register outputs sent
- to the internal colour palette can be individually inhibited. The
- effect of this is to reduce the number of displayed colours whilst
- increasing the quantity of image information available. Therefore
- each of the four image memory planes, can be individually selected
- for display. This display will be monochrome, but 4 images can be
- defined, maintained and rapidly switched between.
-
- See {6.07.20} Colour Plane Enable Register.
-
- We will assume for the moment that all 4 colour bits are operational
- so the display will be in 16 colours. There are two separate methods
- for determining how the pixel data becomes display colour.
-
- The first method mixes just 2 additional bits with the 6 bits output
- from the colour palette. This provides a three way control for each
- displayed colour. The two additional bits provide instant selection
- between 4 distinct colour maps, so by modifying these 2 bits, colour
- modification of the entire image will instantly take place. Also it
- is possible to change the contents of the colour palette so that the
- colours generated change. External colour palette data changes will
- also alter the displayed image colour at any time but the larger the
- palette, the longer it takes to modify.
-
- See {6.07.18} Attribute Mode Control Register.
- See {6.07.22} Colour Select Register.
-
- The second code formation method mixes 4 additional bits with the
- lowest 4 bits from the colour palette output. This provides more
- capability to instantly change the colour mapping between upto 16
- separate colour assignments, each of a full 16 colours.
-
- See {6.07.18} Attribute Mode Control Register.
- See {6.07.22} Colour Select Register.
-
- When the display is generated in 256 colour packed pixel mode the
- shift register outputs become completely divorced from notions of
- image plane association. Instead, the colour palette is ignored,
- with the shift register outputs driving the 8 bit external colour
- palette inputs directly. In this case, only by changing the data
- held in the external colour palette can the display colour change
- be effected. However, there is potential to reduce the number of
- displayed colours, which results in greater ability to change the
- actual colour set displayed. This happens by means of inhibition
- of some of the 8 bits input to the external colour palette. When
- only 7 bits are actually in use, changing the bit 7 for bit 8 can
- radically alter the colour display. If more bits are kept out of
- immediate use, the greater the potential for rapid changes in the
- display colour set.
-
- See {6.08.01} DAC Pixel Mask Register.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- Schematic Data Flow From Shift Register Outputs to Display Colours
- ==================================================================
-
- Scheme A: Colour Select Register provides 2 additional bits.
- =============================================================
-
- See {6.07.22} Colour Select Register.
-
-
-
-
- Colour Select
- ===========--
- <----.32-->
- ||
- ||
- ||
- || Multiplane
- || Shift Register
- || Colour Outputs
- || ===========---
- || <----.3210>
- || ||||
- || ||||
- || ||||
- || ||||
- || |||| [Internal]
- || |||| Colour
- || |||| Palette
- || |||| ===========
- || |||| <0> | 00
- || ||||........>.| 01
- || |||.......>...| 02
- || ||..........>.| .
- || |.........>...| .
- || <3> | .
- || | .
- || | 13
- || | 14
- || | 15
- || ===========
- || <--54.3210>
- || || ||||
- || || ||||
- || || ||||
- ||...................................|| ||||
- |...................................||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- DAC Pixel Mask |||| ||||
- ===========--- |||| ||||
- <7654.3210> |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| -------------
- |||| ||||.........................>...| mask bit0 |
- |||| |||........................>.....| mask bit1 |
- |||| ||...........................>...| mask bit2 |
- |||| |..........................>.....| mask bit3 |
- ||||..............................>...| mask bit4 |
- |||.............................>.....| mask bit5 |
- ||................................>...| mask bit6 |
- |...............................>.....| mask bit7 |
- -------------
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- [256 Colours]
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- .........................................|||| ||||
- |.........................................||| ||||
- ||.........................................|| ||||
- |||.........................................| ||||
- |||| .........................................||||
- |||| |.........................................|||
- |||| ||.........................................||
- |||| |||.........................................|
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| |||| External Colour Palette
- |||| |||| RED GREEN BLUE
- |||| |||| <0> =================================
- |||| ||||.........>.| 000 | 000 | 000
- |||| |||........>...| 001 | 001 | 001
- |||| ||...........>.| 002 | 002 | 002
- |||| |..........>...| . | . | .
- ||||..............>.| . | . | .
- |||.............>...| . | . | .
- ||................>.| . | . | .
- |...............>...| 253 | 253 | 253
- <7> | 254 | 254 | 254
- | 255 | 255 | 255
- =================================
- <7654.3210><7654.3210><7654.3210>
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| ==========
- |||| |||| |||| |||| BLUE DAC |
- |||| |||| |||| |||| inputs |..>......
- |||| |||| |||| |||| ========== |
- |||| |||| =========== |
- |||| |||| GREEN DAC | |
- |||| |||| inputs |..>.........>.... |
- |||| |||| =========== | |
- ========= | |
- RED DAC | | |
- inputs |..>............>.........>.. | |
- ========= | | |
- | | |
- | | |
- | | |
- | | |
- ========
- Analogue
- Output
- ========
-
-
-
-
- See {6.06.07} Graphics Mode Register.
- See {6.07.22} Colour Select Register.
- See {6.08.01} DAC Pixel Mask Register.
-
-
-
-
- -------------------------------------------------------------------
-
-
-
-
- Schematic Data Flow From Shift Register Outputs to Display Colours
- ==================================================================
-
- Scheme B: Colour Select Register provides 4 additional bits.
- =============================================================
-
- See {6.07.22} Colour Select Register.
-
-
-
-
- Colour Select
- ===========--
- <----.3210>
- ||||
- ||||
- ||||
- |||| Multiplane
- |||| Shift Register
- |||| Colour Outputs
- |||| ===========---
- |||| <----.3210>
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| |||| [Internal]
- |||| |||| Colour
- |||| |||| Palette
- |||| |||| ===========
- |||| |||| <0> | 00
- |||| ||||........>.| 01
- |||| |||.......>...| 02
- |||| ||..........>.| .
- |||| |.........>...| .
- |||| <3> | .
- |||| | .
- |||| | 13
- |||| | 14
- |||| | 15
- |||| ===========
- |||| <----.3210>
- |||| ||||
- |||| ||||
- ||||................................... ||||
- |||...................................| ||||
- ||...................................|| ||||
- |...................................||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- DAC Pixel Mask |||| ||||
- ===========--- |||| ||||
- <7654.3210> |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| -------------
- |||| ||||.........................>...| mask bit0 |
- |||| |||........................>.....| mask bit1 |
- |||| ||...........................>...| mask bit2 |
- |||| |..........................>.....| mask bit3 |
- ||||..............................>...| mask bit4 |
- |||.............................>.....| mask bit5 |
- ||................................>...| mask bit6 |
- |...............................>.....| mask bit7 |
- -------------
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- [256 Colours]
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- .........................................|||| ||||
- |.........................................||| ||||
- ||.........................................|| ||||
- |||.........................................| ||||
- |||| .........................................||||
- |||| |.........................................|||
- |||| ||.........................................||
- |||| |||.........................................|
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| |||| External Colour Palette
- |||| |||| RED GREEN BLUE
- |||| |||| <0> =================================
- |||| ||||.........>.| 000 | 000 | 000
- |||| |||........>...| 001 | 001 | 001
- |||| ||...........>.| 002 | 002 | 002
- |||| |..........>...| . | . | .
- ||||..............>.| . | . | .
- |||.............>...| . | . | .
- ||................>.| . | . | .
- |...............>...| 253 | 253 | 253
- <7> | 254 | 254 | 254
- | 255 | 255 | 255
- =================================
- <7654.3210><7654.3210><7654.3210>
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| ==========
- |||| |||| |||| |||| BLUE DAC |
- |||| |||| |||| |||| inputs |..>......
- |||| |||| |||| |||| ========== |
- |||| |||| =========== |
- |||| |||| GREEN DAC | |
- |||| |||| inputs |..>.........>.... |
- |||| |||| =========== | |
- ========= | |
- RED DAC | | |
- inputs |..>............>.........>.. | |
- ========= | | |
- | | |
- | | |
- | | |
- | | |
- ========
- Analogue
- Output
- ========
-
-
-
-
- See {6.06.07} Graphics Mode Register.
- See {6.07.22} Colour Select Register.
- See {6.08.01} DAC Pixel Mask Register.
-
-
-
-
- -------------------------------------------------------------------
-
-
-
-
- Schematic Data Flow From Shift Register Outputs to Display Colours
- ==================================================================
-
- Scheme C: Packed Pixel 256 Colour Format
- =========================================
-
-
-
-
- Packed Pixel
- Shift Register
- Assembly Latch
- Colour Outputs
- ===========
- <7654.3210>
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- DAC Pixel Mask |||| ||||
- ===========--- |||| ||||
- <7654.3210> |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| |||| ||||
- |||| |||| -------------
- |||| ||||.........................>...| mask bit0 |
- |||| |||........................>.....| mask bit1 |
- |||| ||...........................>...| mask bit2 |
- |||| |..........................>.....| mask bit3 |
- ||||..............................>...| mask bit4 |
- |||.............................>.....| mask bit5 |
- ||................................>...| mask bit6 |
- |...............................>.....| mask bit7 |
- -------------
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- [256 Colours]
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- .........................................|||| ||||
- |.........................................||| ||||
- ||.........................................|| ||||
- |||.........................................| ||||
- |||| .........................................||||
- |||| |.........................................|||
- |||| ||.........................................||
- |||| |||.........................................|
- |||| ||||
- |||| ||||
- |||| ||||
- |||| ||||
- |||| |||| External Colour Palette
- |||| |||| RED GREEN BLUE
- |||| |||| <0> =================================
- |||| ||||.........>.| 000 | 000 | 000
- |||| |||........>...| 001 | 001 | 001
- |||| ||...........>.| 002 | 002 | 002
- |||| |..........>...| . | . | .
- ||||..............>.| . | . | .
- |||.............>...| . | . | .
- ||................>.| . | . | .
- |...............>...| 253 | 253 | 253
- <7> | 254 | 254 | 254
- | 255 | 255 | 255
- =================================
- <7654.3210><7654.3210><7654.3210>
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| |||| ||||
- |||| |||| |||| |||| ==========
- |||| |||| |||| |||| BLUE DAC |
- |||| |||| |||| |||| inputs |..>......
- |||| |||| |||| |||| ========== |
- |||| |||| =========== |
- |||| |||| GREEN DAC | |
- |||| |||| inputs |..>.........>.... |
- |||| |||| =========== | |
- ========= | |
- RED DAC | | |
- inputs |..>............>.........>.. | |
- ========= | | |
- | | |
- | | |
- | | |
- | | |
- ========
- Analogue
- Output
- ========
-
-
-
-
- See {6.06.07} Graphics Mode Register.
- See {6.08.01} DAC Pixel Mask Register.
-
-
-
-
- -------------------------------------------------------------------
-
-
-
-
- 6.07.03 Palette Register 01 { 3c0h/I/W 3c1h/R 01h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.04 Palette Register 02 { 3c0h/I/W 3c1h/R 02h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.05 Palette Register 03 { 3c0h/I/W 3c1h/R 03h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.06 Palette Register 04 { 3c0h/I/W 3c1h/R 04h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.07 Palette Register 05 { 3c0h/I/W 3c1h/R 05h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.08 Palette Register 06 { 3c0h/I/W 3c1h/R 06h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.09 Palette Register 07 { 3c0h/I/W 3c1h/R 07h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.10 Palette Register 08 { 3c0h/I/W 3c1h/R 08h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.11 Palette Register 09 { 3c0h/I/W 3c1h/R 09h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.12 Palette Register 10 { 3c0h/I/W 3c1h/R 0ah R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.13 Palette Register 11 { 3c0h/I/W 3c1h/R 0bh R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.14 Palette Register 12 { 3c0h/I/W 3c1h/R 0ch R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.15 Palette Register 13 { 3c0h/I/W 3c1h/R 0dh R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.16 Palette Register 14 { 3c0h/I/W 3c1h/R 0eh R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.17 Palette Register 15 { 3c0h/I/W 3c1h/R 0fh R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
-
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.07.18 Attribute Mode Control Register { 3c0h/I/W 3c1h/R 10h R/W }
- ======= ==================================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.04.05} Character Map Select Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.07.02} Palette Register 00.
- Cross reference with {6.07.21} Horizontal PEL Panning Register.
- Cross reference with {6.07.22} Colour Select Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.04} Mode Control Register 2.
-
-
- <0> Display Generation Mode
- -----------------------
-
- See {6.06.08} Miscellaneous Register.
-
- <=0> Text Mode
- ---------
-
- Hardware character generation is invoked for display generation.
- There is no capability to generate graphics in the usual manner
- but a software technique can be used, giving a limited graphics
- capability. The technique depends upon assigning characters to
- a display area, then re-writing the character fonts assigned to
- those characters. In this manner a limited graphics capability
- can be supported within a relatively small area of the display.
-
- The text mode display stores character codes in memory plane 0,
- with their associated attribute bytes in plane 1. The hardware
- expects character font data to be stored at specified addresses
- in plane 2. Memory plane 3 is unused in this display mode.
-
- The main characteristics of this mode are high speed operation,
- with very low associated host processor overhead. A number of
- separate pages of text can be maintained, and switched between
- at high speed. This is the ideal mode to employ where no true
- graphics capability is required, other than that provided with
- the specially reserved graphics drawing characters. Two fonts
- can be used within one display screen, each font consisting of
- 256 characters in total. User defined fonts can be used, when
- occasion demands.
-
- See {6.04.03} Clocking Mode Register.
- See {6.04.05} Character Map Select Register.
- See {6.05.22} Underline Location Register.
-
- <=1> Graphics Mode
- -------------
-
- The display will be generated with reference to an image memory,
- organised as a collection of pixel data. There is no capability
- for the support of hardware text generation, but software can be
- written to support multiple character fonts and any size of font
- necessary for the application.
-
- Display image memory organisation is dependant upon the range of
- colours available for definition of a pixel. The principle mode
- options include:
-
-
- 1. Multiplane 16 Colour
- --------------------
-
- The display memory is arranged as four parallel planes
- each of which holds data for eight pixels by splitting
- four colour bits across four planes. Each plane gives
- access to a single byte when presented with an address
- so with parallel address spaces, each access returns 4
- bytes. The 32 bits specify 4 bits of colour data, for
- each of eight pixels.
-
- See {6.06.07} Graphics Mode Register.
-
- 2. Packed pixel Monochrome
- -----------------------
-
- The display memory is arranged as a linear array which
- is addressed in a manner corresponding directly to the
- screen pixel display. One bit per pixel specifies any
- colour required, from a large available palette. This
- choice is normally restricted by making black the fore
- ground colour. The display image is easily managed as
- it is of small size. A large number of distinct pages
- can be maintained and quickly switched for one another
- which is very useful for hierarchical design systems.
-
- See {6.06.07} Graphics Mode Register.
-
- 3. Packed Pixel 4 Colour
- ---------------------
-
- This display mode requires double the amount of memory
- compared with monochrome mode, but provides 4 colours,
- which can be much more flexible in some applications.
-
- Each pixel is represented by two neighbouring bits, so
- four pixels are collected together in one byte. There
- are special hardware capabilities available, to decode
- this special colour representation.
-
- Since images are still very compact large displays can
- be manipulated without great memory overhead; a number
- of distinct pages can be held in memory and swapped at
- high speed.
-
- See {6.06.07} Graphics Mode Register.
-
- 4. Packed Pixel 256 Colour
- -----------------------
-
- This display mode ensures the highest image resolution
- and complexity. As a result the display memory needed
- is larger than with any other mode. This can mean the
- quantity of data accessed when changing an image is an
- important determinant of processing speed. A pixel is
- represented by a single byte of data. In this way, it
- is the simplest mode, from the point of view of memory
- organisation.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Display Generation Mode
- -----------------------
-
- <=0> Select colour display attribute definitions for supporting
- colour emulation mode.
-
- <=1> Select monochrome display attribute definitions for supporting
- monochrome emulation mode.
-
- This selection governs the treatment of attribute byte decoding, in
- text mode. Differences exist in expressive capability of attributes
- depending upon whether monochrome or colour emulation is active.
-
- To see these differences, consult the specification of the attribute
- byte under both emulation schemes.
-
- See {6.05.22} Underline Location Register.
-
-
- <2> Line Graphics Character Code Control
- ------------------------------------
-
- <=0> When using 9 dot character clocks, this option specifies that
- the ninth dot will always be set to the background colour for
- character generation in text mode. This setting implies that
- there are no special continuous line graphics characters used
- in the character font.
-
- See {6.04.03} Clocking Mode Register.
-
- <=1> When using 9 dot character clocks, and a graphics character is
- to be generated in text mode with a code value between hex 'c0'
- and hex 'df' inclusive the ninth dot will be displayed exactly
- as was the eighth dot. This provides for character fonts with
- the full eight pixels width, without any problems of merging.
-
- Where continuous line graphics are used, however, merging must
- occur selectively for all the graphics character codes. These
- graphic codes are not always present in all character sets, so
- there must be a means to disable them selectively.
-
- See {6.04.03} Clocking Mode Register.
-
-
- <3> Text Mode Attribute Select
- --------------------------
-
- <=0> The text mode attribute byte associated with each character for
- display defines bit <7> in one of two different ways: with this
- option selection, bit <7> specifies background intensity. When
- the intensity bit is set a high background colour luminosity is
- displayed, drawing attention to the foreground text display.
-
- See {6.05.22} Underline Location Register.
-
- <=1> The text mode attribute byte associated with each character for
- display defines bit <7> in one of two different ways: with this
- option selection, bit <7> specifies background blink. When the
- blink bit is set, the background switches on and off, driven by
- the vertical retrace signal. In this manner attention is drawn
- to the text display in the foreground.
-
- See {6.05.22} Underline Location Register.
-
-
- <4> Reserved. Always <=0>.
- -----------------------
-
-
- <5> Split Screen Panning Control
- ----------------------------
-
- <=0> Scroll both screens horizontally {this is panning} in the same
- manner, as defined by the various control registers. This has
- utility only when a split screen display is operational.
-
- <=1> Scroll only the upper screen {that is upper window} of a split
- screen display in the horizontal direction, leaving the screen
- in the lower position intact. This only has significance when
- a split screen display creates an upper and lower window.
-
- See {6.05.10} Preset Row Scan Register.
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
- See {6.05.26} Line Compare Register.
- See {6.07.21} Horizontal PEL Panning Register.
-
-
- <6> Shift Register 256 Colour Assembly Latch
- ----------------------------------------
-
- <=0> The 4 bit shift register output bits are sent for translation
- into the internal 16 address colour palette, producing 6 bits
- of colour output. These bits are increased to 8 bits through
- various options, and the resulting 8 bit code is presented to
- the external colour palette, which drives the display unit.
-
- See External Colour Palette Input Select, immediately below.
-
- This setting should be used for 2 colour, 4 colour, 16 colour
- displays, in either graphics mode or text mode.
-
- See {6.06.07} Graphics Mode Register.
- See {6.06.08} Miscellaneous Register.
-
- <=1> The 4 bit shift register output bits do not go to the internal
- colour palette for translation. Instead, using two successive
- dot clock periods 4 bits of shift register output are combined
- together to produce one 8 bit pixel colour value. Every other
- dot clock produces a new 256 colour pixel which is sent direct
- to the external colour palette and thence the display unit.
-
- This setting should only ever be used to produce packed pixel
- displays supporting 256 colours. There are implications for
- the dot clock frequency when this mode is employed.
-
- See {6.06.07} Graphics Mode Register.
-
- There are controls available to select dot clock frequency and
- dot clock division ratios.
-
- See {6.09.01} Miscellaneous Output Register.
- See {6.10.04} Mode Control Register 2.
-
-
- <7> External Colour Palette Input Select
- ------------------------------------
-
- <=0> For all display modes other than 256 colour packed pixel mode,
- this option selects the source of bits <5..4> which are output
- to the external colour palette for driving the display unit.
-
- With this option, these bits are sourced from the internal
- colour palette output bits <5..4>. In this case there are
- two bits provided by a register to make up these 6 bits to
- the 8 bits required to drive the external colour palette.
-
- See {6.07.22} Colour Select Register.
-
- <=1> For all display modes other than 256 colour packed pixel mode,
- this option selects the source of bits <5..4> which are output
- to the external colour palette for driving the display unit.
-
- For this option setting, these bits are sourced from a special
- register provided for the purpose. This register normally has
- responsibility for providing two additional bits to make the 8
- bit group needed for input to the external colour palette. In
- this case, the register provides the original two bits with an
- extra two bits, making four in total. Under this circumstance
- the internal colour palette output is restricted to four bits,
- instead of the usual six bits. These four bits are the lowest
- significance bits.
-
- See {6.07.22} Colour Select Register.
-
- Note that the Shift Register 256 Colour Assembly Latch must be <=0>
- if this option is to have any effect. See immediately above.
-
- See Shift Register 256 Colour Assembly Latch, immediately above.
- See {6.06.07} Graphics Mode Register.
-
-
-
-
- 6.07.19 Overscan Colour Register { 3c0h/I/W 3c1h/R 11h R/W }
- ======= ===================================================================
-
-
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.03} Horizontal Display Enable End Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.20} Vertical Display Enable End Register.
-
-
- <7..0> Overscan Colour
- ---------------
-
- At times when the active image is not being produced, and yet there
- is no blanking in progress the external colour palette must produce
- some displayable colour. The selection of this colour is performed
- by the binary field in this register.
-
- A discussion of horizontal image scan line generation is available.
- This is appropriate to border colour generation on the boundaries
- of each active image scan line.
-
- See {6.05.02} Horizontal Total Register.
- See {6.05.03} Horizontal Display Enable End Register.
- See {6.05.04} Start Horizontal Blanking Register.
- See {6.05.05} End Horizontal Blanking Register.
- See {6.05.20} Vertical Display Enable End Register.
-
- A discussion of vertical timing generation is available. This is
- useful to appreciate border colour generation during non-active
- image scan line generation.
-
- See {6.05.08} Vertical Total Register.
-
-
-
-
- 6.07.20 Colour Plane Enable Register { 3c0h/I/W 3c1h/R 12h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.07.02} Palette Register 00.
- Cross reference with {6.09.04} Input Status Register One.
-
-
- <0> Colour Plane Enable 0
- ---------------------
-
- <=0> Disable all output from a shift register(s) associated with this
- image memory plane. The output is set to be a constant zero bit
- to provide a stable input to the colour tables.
-
- <=1> Enable shift register(s) output associated with this image plane
- so the data shifted out will provide input to the colour tables.
-
- There is discussion of shift register operation together with diagrams
- showing shift register data paths and output data paths.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <1> Colour Plane Enable 1
- ---------------------
-
- <=0> Disable all output from a shift register(s) associated with this
- image memory plane. The output is set to be a constant zero bit
- to provide a stable input to the colour tables.
-
- <=1> Enable shift register(s) output associated with this image plane
- so the data shifted out will provide input to the colour tables.
-
- There is discussion of shift register operation together with diagrams
- showing shift register data paths and output data paths.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <2> Colour Plane Enable 2
- ---------------------
-
- <=0> Disable all output from a shift register(s) associated with this
- image memory plane. The output is set to be a constant zero bit
- to provide a stable input to the colour tables.
-
- <=1> Enable shift register(s) output associated with this image plane
- so the data shifted out will provide input to the colour tables.
-
- There is discussion of shift register operation together with diagrams
- showing shift register data paths and output data paths.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <3> Colour Plane Enable 3
- ---------------------
-
- <=0> Disable all output from a shift register(s) associated with this
- image memory plane. The output is set to be a constant zero bit
- to provide a stable input to the colour palette.
-
- <=1> Enable shift register(s) output associated with this image plane
- so the data shifted out will provide input to the colour tables.
-
- There is discussion of shift register operation together with diagrams
- showing shift register data paths and output data paths.
-
- See {6.06.07} Graphics Mode Register.
-
-
- <5..4> Display Status Select
- ---------------------
-
- This binary field selects two of the eight colour select output bits
- to be read back using the register reserved for this use. Which are
- selected are detailed by the table below.
-
- See {6.09.04} Input Status Register One.
-
-
- Display Status Select
- =====----------------
-
- Input Status Register One, bit 5
- ===== ==------------------------------
-
- Input Status Register One, bit 4
- ===== == ==------------------------------
-
-
- <=00> c2 c0
-
- <=01> c5 c4
-
- <=10> c3 c1
-
- <=11> c7 c6
-
-
- ------------------------------------------------------------
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- 6.07.21 Horizontal PEL Panning Register { 3c0h/I/W 3c1h/R 13h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.26} Line Compare Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
-
-
- <3..0> Horizontal PEL Panning
- ----------------------
-
- PEL panning {Picture ELement panning} operates in both graphics mode
- and text mode displays, so it is always operational. Panning shifts
- the entire display image to the left of the screen loosing pixels on
- the left and introducing new pixels to the right. It is implemented
- in hardware by missing out pixels at the beginning of a scan line so
- that the scan line active display starts at a point after the actual
- start of image data for the scan line. This means of course, that a
- scan line to be panned in this way must be wider than the screen, so
- that there is always some data which cannot be displayed. It is the
- hidden data which is brought into view by the panning process.
-
- There is a discussion of panning elsewhere, which is concerned with
- byte panning controls which can be used with pixel panning controls
- to achieve continuous, smooth horizontal panning.
-
- See {6.05.10} Preset Row Scan Register.
-
- The value provided in order to control pixel panning varies depending
- upon the way the display is generated. In particular, there may be 8
- or 9 dot clock periods per character clock period. This reflects the
- fact that in text mode displays, there is a choice for interpretation
- of a character font. When the full 8 pixel width of a font expresses
- a true 8 pixel width character shape, then an extra pixel must be put
- into the display after each character position, so that characters do
- not merge with each other. This is the motivation for providing nine
- dot clock periods per character clock. When a character font ignores
- the 8th pixel, setting it always to the background colour there is no
- need to provide for character separation by hardware. In this case 8
- dot clock periods per character clock period are all that is required.
-
- See {6.04.03} Clocking Mode Register.
-
- The type of graphics display generation scheme also affects the value
- used to control pixel panning operation. This arises because panning
- is implemented in hardware by means of special shift registers, which
- use the structure of a serial data stream to shift the image. In the
- most commonly used display mode, 16 colour multiplane mode each pixel
- is represented by one position in the panning shift registers. Where
- a pixel occupies more than one panning shift register position, shift
- values must change accordingly. This affects the behaviour of images
- built using 9 dot clocks, and those using packed pixel modes with the
- pixel represented by more than one bit.
-
-
-
-
- Control Value for Horizontal Pixel Panning
- ===---------------------------------------
-
-
- Actual panned distance, in pixels, on screen
- === ===============================================================
-
-
- Text Mode, 8 dot clock character period
- === ===------------------------------------
-
-
- Text Mode, 9 dot clock character period
- === === ===------------------------------------
-
-
- Multiplane 16 colour mode
- === === === ===----------------------
-
-
- Packed Pixel 2 colour mode
- === === === === ===-----------------------
-
-
- Packed Pixel 4 colour mode
- === === === === === ===-----------------------
-
-
- Packed Pixel 256 colour mode
- === === === === === === ===-------------------------
-
-
- 0 0 1 ! 0 0 0 0 !
-
- 1 1 2 ! 1 1 1 * !
-
- 2 2 3 ! 2 2 2 1 !
-
- 3 3 4 ! 3 3 3 * !
-
- 4 4 5 ! 4 4 4 2 !
-
- 5 5 6 ! 5 5 5 * !
-
- 6 6 7 ! 6 6 6 3 !
-
- 7 7 8 ! 7 7 7 * !
-
- 8 0 0 ! 0 0 0 * !
-
-
- Notes:
- ======
-
-
- ! specifies that this entry is different from the majority of entries
- and that special attention should be given to the entry as a result
- of this.
-
-
- * specifies that the entry is 'not applicable'. This arises because
- of the way packed pixel 256 colour mode uses two dot clock periods
- to construct an 8 bit colour code. Each dot clock makes the shift
- registers deliver one packet of 4 bits of colour code. After each
- two consecutive dot clocks, two four bit packets are combined with
- the required 8 bit colour code as a result. Therefore a two place
- shift is required per pixel in 256 colour packed pixel mode. This
- 'not applicable' entry should be avoided since it will not produce
- the expected results.
-
- See {6.06.07} Graphics Mode Register.
-
-
- Formulae concerned with 8 dot clock character periods and 9 dot clock
- character periods are as follows:
-
- left_pan = (number_field + 0) mod 8
- left_pan = (number_field + 1) mod 9
-
- See {6.04.03} Clocking Mode Register.
-
-
- ----------------------------------------------------------------------
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.07.22 Colour Select Register { 3c0h/I/W 3c1h/R 14h R/W }
- ======= ===============================================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
- Cross reference with {6.07.18} Attribute Mode Control Register.
-
-
- The Colour Select Register provides additional colour definition bits
- which are used to increase the either 4 or 6 bits output, produced by
- the internal colour palette, to the 8 colour bits as required for the
- external colour palette input.
-
- The number of bits produced by the internal colour palette is selected
- by means of a control bit, which also governs the number of bits taken
- from the Colour Select Register. This is arranged so that there are 8
- bits of resulting colour code, under all circumstances. This control
- is provided by the bit External Colour Palette Input Select.
-
- See {6.07.18} Attribute Mode Control Register.
-
- However, when the packed pixel 256 colour mode is in use, there is no
- need to provide any additional colour data as all 8 bits required for
- input to the external colour palette come directly from display image
- memory. Then there is no use for the Colour Select Register. Option
- control is governed by the Shift Register 256 Colour Assembly Latch.
-
- See {6.07.18} Attribute Mode Control Register.
-
- A detailed discussion with schematics is available for the data flow
- between the memory image plane shift register outputs and the display
- unit analogue colour inputs.
-
- See {6.07.02} Palette Register 00.
-
-
- <1..0> External colour palette bits <5..4>
- -----------------------------------
-
- In all display generation modes except packed pixel 256 colour mode,
- these bits are always available for optional use, controlled by the
- Attribute Mode Control Register. When selected for use, these bits
- replace the internal colour palette output bits <5..4> becoming the
- bits <5..4> input to the external colour palette.
-
- See {6.07.18} Attribute Mode Control Register.
-
-
- <3..2> External colour palette bits <7..6>
- -----------------------------------
-
- In all display generation modes except packed pixel 256 colour mode,
- these bits are always available for unconditional use. They become
- bits <7..6> input to the external colour palette.
-
- See {6.07.02} Palette Register 00.
-
-
- <7..4> Reserved. Always <=0000>.
- --------------------------
-
-
-
-
- 6.08 Register specifications: DAC Support Logic
- ==== ==========================================
-
-
- 6.08.01 DAC Pixel Mask Register { 3c6h R/W }
- ======= ===============================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
- Cross reference with {6.08.02} DAC Status Register.
-
-
- <0> DAC Pixel Mask 0 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- The shift registers produce an output stream of width dependant upon
- the display generation mode in use. No matter what this data output
- width actually is, ultimately it will be expanded into the 8 bits of
- colour data required as input by the external colour palette. Where
- it is required that a reduction in addressing into this 256 location
- memory be put into effect, it is possible to substitute zero bits in
- place of specified colour input bits. The substitution is permitted
- or disabled by means of this DAC Pixel Mask Register, with a bit for
- bit control correspondance.
-
- <=0> Send zero into the external colour palette at this input bit
- position.
-
- <=1> Permit colour data at this input bit position to flow freely
- into the external colour palette.
-
- A detailed discussion of colour generation is available, with data
- flow schematics.
-
- See {6.07.02} Palette Register 00.
-
- By selectively enabling and disabling individual colour select bits,
- an image can be manipulated for different colour sets very rapidly.
- Also, multiple images can be associated with different colour data,
- and combined in different ways using this masking control technique.
-
- Note that if the external colour palette is correctly initialised it
- is possible to associate multiple images with identical colour sets,
- thereby making multiple image animation sequences possible. This is
- possible only by using identical colour definitions, repeated across
- many distinct addresses.
-
- For operational purposes it should be noted that accesses to the
- DAC Pixel Mask Register are not relevant for DAC Status Register
- purposes.
-
- See {6.08.02} DAC Status Register.
-
-
- <1> DAC Pixel Mask 1 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <2> DAC Pixel Mask 2 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <3> DAC Pixel Mask 3 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <4> DAC Pixel Mask 4 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <5> DAC Pixel Mask 5 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <6> DAC Pixel Mask 6 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
- <7> DAC Pixel Mask 7 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------------------
-
- As for DAC Pixel Mask 0 above.
-
-
-
-
- 6.08.02 DAC Status Register { 3c7h R-- }
- ======= ===============================================
-
-
- Cross reference with {6.08.01} DAC Pixel Mask Register.
- Cross reference with {6.08.03} DAC Read Data Address Register.
- Cross reference with {6.08.04} DAC Write Data Address Register.
- Cross reference with {6.08.05} DAC Data Register.
-
-
- <1..0> DAC Status
- ----------
-
- <=00> The last access to the DAC Data Register was a processor write
- access.
-
- <=01> This value significance is not assigned.
-
- <=10> This value significance is not assigned.
-
- <=11> The last access to the DAC Data Register was a processor read
- access.
-
- This binary field indicates the type of transaction last performed by
- the processor on the DAC Data Register. This information can be used
- in a situation when an interrupt routine periodically writes into the
- external colour palette, to modify the colour data held there. After
- such a write sequence has been completed in the interrupt routine, it
- is important that any read or write activity which was in progress at
- the time of the interrupt is restored transparently. In practise, an
- interrupt routine might well need to read and write colour data; this
- situation is taken care of equally well by the DAC Status Register if
- it is correctly used.
-
- See {6.08.05} DAC Data Register.
-
- An interrupt routine executes without synchronisation to main program
- code. This program could read from or write to the DAC Data Register
- at any time, so when the interrupt occurs, the transaction state with
- the DAC Data Register is effectively unknown. Despite this, any such
- trnsaction must be permitted to continue undisturbed, after interrupt
- program execution is complete.
-
- It is this problem which the DAC Status Register is designed to give
- the solution to.
-
- When the interrupt program gains control, there could be either of a
- read transaction or a write transaction in progress from the program
- which was executing immediately prior to the interrupt. Whilst this
- program would typically be the main program it could also be another
- interrupt program, assigned to a different, lower interrupt level.
-
- The first job the newly entered interrupt program must perform is to
- secure the status of that program which has just had control wrested
- from it. This involves determining which type of transaction was in
- progress at the time of interrupt. By using the DAC Status Register
- an indication is given as to the type of transaction, which was last
- in progress. This transaction might well be complete or it could be
- still in progress. This point is unknown but does not matter if the
- object is only to preserve the status of the DAC Data Register.
-
- Any read or write sequence involving the DAC Data Register begins by
- means of a write from the processor into either of the two registers
- DAC Read Data Address Register, or DAC Write Data Address Register.
- This write to a particular address register is used to associate the
- DAC Data Register with the appropriate transaction type, either read
- or write. It is also used to specify which of the address registers
- should be associated with the autoincrement capability that provides
- for long transfers of one type without need to update the addressing
- register for that transaction type.
-
- The read address is initialised prior to any read sequence, with the
- write address set prior to any write sequence. During that sequence
- the relevant address register is updated automatically, so that long
- data transfers in either direction can occur without the overhead of
- resetting the address register. This makes for fast program running
- times and eases programming overheads.
-
- However, after any other transaction type is used, the autoincrement
- feature is switched off. This means that writing a value to another
- address register or performing a transaction of the opposite type is
- sufficient to switch off autoincrement to the address register being
- presently used. This has the effect of freezing an address register
- which in turn provides for recovering the present contents and later
- reinstating them, for example, after an interrupt has completed.
-
- It should now be clear that for an interrupt program to preserve any
- existing read or write sequence on the DAC Data Register it is quite
- enough to determine the last transaction type, and then to read from
- the associated address register the current read or write address in
- use by the previously executing program. After the interrupt, there
- is no difficulty in restoring the DAC Data Register program state by
- using the preserved value from interrupt entry time.
-
- See {6.08.03} DAC Read Data Address Register.
- See {6.08.04} DAC Write Data Address Register.
-
- For operational purposes it should be noted that accesses to the
- DAC Pixel Mask Register are not relevant for DAC Status Register
- purposes.
-
- See {6.08.01} DAC Pixel Mask Register.
-
-
- <7..2> Reserved. Always <=000000>.
- ----------------------------
-
-
-
-
- 6.08.03 DAC Read Data Address Register { 3c7h W-- }
- ======= ===============================================
-
-
- Cross reference with {6.08.02} DAC Status Register.
- Cross reference with {6.08.04} DAC Write Data Address Register.
- Cross reference with {6.08.05} DAC Data Register.
-
-
- <7..0> DAC Read Data Address
- ---------------------
-
- This binary field determines the initial value for the address index
- into the external colour palette, at which processor reads will take
- place. The external colour palette contains 256 distinct addresses,
- each of which holds three colour values of up to 8 bits each for the
- colours read, green and blue. Typically either 6 bits or 8 bits for
- each colour intensity are provided, depending upon the hardware.
-
- Setting a new DAC Read Data Address value has the effect of freezing
- the current value of the DAC Write Data Address, and also associates
- the address autoincrement operation with the read transaction on the
- DAC Data Register.
-
- See {6.08.04} DAC Write Data Address Register.
- See {6.08.05} DAC Data Register.
-
- At this point, the processor can perform three read transactions on
- the DAC Data Register, after which an automatic increment will make
- the address point to the next group of three intensity values. The
- possibility of an interrupt occuring during this 3 consecutive read
- sequence must be taken into account as the hardware state cannot be
- interrogated to discover which of the three colours was the last to
- be transferred. In practise, most programs adopt a policy eshewing
- use of interrupts during the three colour data transfer. This will
- effectively prevent such a transfer from being interrupted, and the
- problems of an unknown hardware transfer state simply disappear.
-
- The current read address can be discovered at any time, by virtue of
- a read on the DAC Write Data Address Register. This is necessary to
- recover the hardware state at time of entry to an interrupt routine.
-
- See {6.08.04} DAC Write Data Address Register.
-
- The address register in use {either read or write} can also be found
- by using a special status register.
-
- See {6.08.02} DAC Status Register.
-
-
-
-
- 6.08.04 DAC Write Data Address Register { 3c8h R/W }
- ======= ===============================================
-
-
- Cross reference with {6.08.02} DAC Status Register.
- Cross reference with {6.08.03} DAC Read Data Address Register.
- Cross reference with {6.08.05} DAC Data Register.
-
-
- <7..0> DAC Write Data Address
- ----------------------
-
- This binary field determines the initial value for the address index
- into the external colour palette at which processor writes will take
- place. The external colour palette contains 256 distinct addresses,
- each of which holds three colour values of up to 8 bits each for the
- colours read, green and blue. Typically either 6 bits or 8 bits for
- each colour intensity are provided, depending upon the hardware.
-
- Updating the DAC Write Data Address value has the effect of freezing
- the current value of the DAC Read Data Address which also associates
- the address autoincrement feature with any write transaction, to the
- DAC Data Register.
-
- See {6.08.03} DAC Read Data Address Register.
- See {6.08.05} DAC Data Register.
-
- At this point the processor can perform three write transactions on
- the DAC Data Register, after which an automatic increment will make
- the address point to the next group of three intensity values. The
- possibility of an interrupt occuring during these three consecutive
- writes must be carefully considered as the hardware state cannot be
- interrogated to discover which of the three colours was the last to
- be transferred. In practise, most programs adopt a policy eshewing
- use of interrupts during the three colour data transfer. This will
- effectively prevent such a transfer from being interrupted, and the
- problems of an unknown hardware transfer state simply disappear.
-
- The current write address can be discovered at any time by virtue of
- a read on the DAC Write Data Address Register. This is necessary to
- recover the hardware state at time of entry to an interrupt routine.
-
- See {6.08.04} DAC Write Data Address Register.
-
- The address register in use {either read or write} can also be found
- by using a special status register.
-
- See {6.08.02} DAC Status Register.
-
-
-
-
- 6.08.05 DAC Data Register { 3c9h R/W }
- ======= ===============================================
-
-
- Cross reference with {6.07.02} Palette Register 00.
- Cross reference with {6.08.02} DAC Status Register.
- Cross reference with {6.08.03} DAC Read Data Address Register.
- Cross reference with {6.08.04} DAC Write Data Address Register.
-
-
- <7..0> DAC Data
- --------
-
- All processor read and write operations which transfer colour values
- to and from the external colour palette are implemented using access
- to this register. The actual read or write address accessed is that
- specified in the address register for either read or write functions.
-
- See {6.08.03} DAC Read Data Address Register.
- See {6.08.04} DAC Write Data Address Register.
-
- The external colour palette accepts an 8 bit value which ranges over
- 256 separate addresses. Each address stores three colour values for
- red, green and blue intensities, respectively. Since each colour is
- of either 6 or 8 bits width to completely access all the colour data
- at any given address, 3 byte sized transfers are used, in the strict
- order red, green, blue. The processor must issue 3 consecutive read
- or write transactions to complete the access to the data at a single
- address. This can mean in practise that during the 3 byte transfer,
- interrupts remain inhibited so that no indeterminate length accesses
- can occur, so avoiding the hardware entering an unknown state.
-
- To prevent the hardware entering an unknown state, all transactions
- must first determine the current transaction type and address, then
- initialise the relevent read or write address register fro the type
- of intended transaction, before proceeding.
-
- The current access address can be discovered at any time by means of
- a read on the DAC Write Data Address Register. This is necessary to
- recover the hardware state at time of entry to an interrupt routine.
-
- See {6.08.04} DAC Write Data Address Register.
-
- The address register in use {either read or write} can also be found
- by using a special status register. This is sometimes necessary for
- purposes of determining the hardware state at the time of activation
- of an interrupt routine.
-
- See {6.08.02} DAC Status Register.
-
- A discussion of the role of the external colour palette is available
- elsewhere.
-
- See {6.07.02} Palette Register 00.
-
-
-
-
- 6.09 Register specifications: General Registers
- ==== ==========================================
-
-
- 6.09.01 Miscellaneous Output Register { 3c2h W-- }
- ======= ============================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.05.01} CRT Controller Address Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.07.01} Attribute Address Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.09.02} Miscellaneous Output Register.
- Cross reference with {6.09.04} Input Status Register One.
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register is subject to write protection through option setting.
- The whole register is affected.
-
- See {6.10.07} CRTC Module Testing Register.
-
- This register can be read back using a different input output port
- address provided specially for this purpose.
-
- See {6.09.02} Miscellaneous Output Register.
-
-
- <0> Input Output Address Select
- ---------------------------
-
- <=0> Select the CRT Controller input/output port address to be
- hex '3b?', where '?' is some hex digit.
-
- See {6.05.01} CRT Controller Address Register.
-
- Also select the Input Status Register One port address to
- hex '3ba'.
-
- See {6.09.04} Input Status Register One.
-
- <=1> Select the CRT Controller input/output port address to be
- hex '3d?', where '?' is some hex digit.
-
- See {6.05.01} CRT Controller Address Register.
-
- Also select the Input Status Register One port address to
- hex '3da'.
-
- See {6.09.04} Input Status Register One.
-
-
- <1> Display Memory Access Enable
- ----------------------------
-
- This control can be used to prevent image memory from responding
- to processor generated addresses, in circumstances where another
- device is (temporarily) enabled for the same address span.
-
- <=0> Disable processor access to display image memory.
-
- <=1> Enable processor access to display image memory.
-
- There are controls available to select the address range employed
- for processor access to display image memory.
-
- See {6.06.08} Miscellaneous Register.
-
-
- <3..2> Dot Clock Frequency Select
- --------------------------
-
- Dot clock selection controls horizontal pixel resolution and also
- character clock generation. The clock frequency control modifies
- the dot clock period in conjunction with a programmable dot clock
- division ratio select. This resulting dot clock is then used for
- character clock definition. The character clock specifies a scan
- line period, which in turn determines the frame period for a full
- image display to be produced. This frame period then decides the
- display refresh rate. The dot clock is a master timing reference.
-
- <=00> Clock select 25.175 MHz clock for
- 640 total Horizontal Pixels.
-
- <=01> Clock select 28.322 MHz clock for
- 720 total Horizontal Pixels.
-
- <=10> Clock select external user clock
- up to a maximum of 65.000 MHz.
-
- <=11> Clock select external user clock
- up to a maximum of 65.000 MHz.
-
- See {6.04.03} Clocking Mode Register
- See {6.05.02} Horizontal Total Register.
- See {6.05.08} Vertical Total Register.
- See {6.06.07} Graphics Mode Register.
- See {6.10.04} Mode Control Register 2.
-
-
- <4> Reserved. Always <=0>.
- -----------------------
-
-
- <5> Address Extension Bit
- ---------------------
-
- <=0> Select the low 64K page.
-
- <=1> Select the high 64K page.
-
- This bit is the 64K page bit for the Text Memory Access Mode. For
- more details consult Processor Image Memory Access Mode Select.
-
- See {6.04.06} Sequencer Memory Mode Register.
-
- This option controls processor access to display image memory, and
- offers a larger number of possible display pages in text mode. It
- is only used in conjunction with text mode displays.
-
- See {6.06.08} Miscellaneous Register.
-
-
- <6> Horizontal Synchronisation Signal Polarity
- ------------------------------------------
-
- This polarity with Vertical Synchronisation Signal Polarity, below,
- encodes the vertical scan line count for the display unit. This is
- an aid to the display unit, in helping to select the vertical frame
- rate. See table below.
-
- <=0> Positive horizontal retrace signal select.
-
- <=1> Negative horizontal retrace signal select.
-
-
- <7> Vertical Synchronisation Signal Polarity
- ----------------------------------------
-
- This polarity with Horizontal Synchronisation Signal Polarity below
- encodes the vertical scan line count for the display unit. This is
- an aid to the display unit, in helping to select the vertical frame
- rate. See table below.
-
- <=0> Positive vertical retrace signal select.
-
- <=1> Negative vertical retrace signal select.
-
-
-
-
- Encoding of Vertical Scan Line Count for Display Unit
- =====================================================
-
-
- Vertical Synchronisation Signal Polarity
- =---------------------------------------
-
- Horizontal Synchronisation Signal Polarity
- = =-----------------------------------------
-
- Vertical Display Size
- = = ===----------------------------------------
-
-
- 0 0 reserved, not used at present
-
- 0 1 400 scan lines
-
- 1 0 350 scan lines
-
- 1 1 480 scan lines
-
-
- -----------------------------------------------------
-
-
-
-
- 6.09.02 Miscellaneous Output Register { 3cch --R }
- ======= ============================================
-
-
- Cross reference with {6.09.01} Miscellaneous Output Register.
-
-
- <7..0> Miscellaneous Output
- --------------------
-
- This is a read only register, provided for use with the write
- only Miscellaneous Output Register.
-
- The value in this register can be written using the different
- input output port address provided for this purpose.
-
- See {6.09.01} Miscellaneous Output Register.
-
-
-
-
- 6.09.03 Input Status Register Zero { 3c2h R-- }
- ======= ============================================
-
-
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.09.04} Input Status Register One.
- Cross reference with {10.02} Monitor auto-detection operation.
-
-
- <3..0> Reserved. Always <=0000>.
- --------------------------
-
-
- <4> Monitor Detect Status Bit
- -------------------------
-
- <=0> There is a high video signal current flowing at this time. This
- is a real-time scan line status, which comes directly from video
- DAC output measurement.
-
- <=1> There is a low video signal current flowing at this time. This
- is a real-time scan line status which comes directly from video
- DAC output measurement.
-
- This read only bit provides an indication of the video signal current
- flow into a display unit during active video signal generation. This
- provides information to determine which of a monochrome display unit,
- or a colour display unit is connected to the image generator. Use of
- this bit is in practise non-trivial, as is described elsewhere. This
- is a facility which must only be used when the original documentation
- from the VGA subsystem manufacturer is available.
-
- See {10.02} Monitor auto-detection operation.
-
-
- <6..5> Reserved. Always <=00>.
- ------------------------
-
-
- <7> CRT Controller Interrupt State
- ------------------------------
-
- <=0> There is no current vertical retrace interrupt active, which is
- because there really is no vertical retrace at present, or this
- status is itself permanently inactive through option selection.
-
- See {6.05.19} Vertical Retrace End Register.
-
- <=1> A vertical retrace interrupt is pending. This interrupt can be
- received by the processor only where 8259 interrupt hardware is
- correctly initialised. This status can always be accessed by a
- continuous polling operation by software, providing always that
- this status is itself enabled by option selection.
-
- See {6.05.19} Vertical Retrace End Register.
-
- This status bit can be used to synchronise software operation with the
- display unit frame production. In this manner, certain critical types
- of operation can be made to occur during frame flyback time. This has
- the effect of preventing any visual disturbance to the display screen,
- which is psychologically far better for the user of the display unit.
-
- See {6.09.04} Input Status Register One.
- See {10.02} Monitor auto-detection operation.
-
-
-
-
- 6.09.04 Input Status Register One { 3?ah R-- }
- ======= ============================================
-
-
- Cross reference with {6.07.01} Attribute Address Register.
- Cross reference with {6.07.20} Colour Plane Enable Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.09.03} Input Status Register Zero.
- Cross reference with {10.02} Monitor auto-detection operation.
-
-
- The input/output port address of this register can be modified under
- program control by unsing the Input Output Address Select option bit
- in the Miscellaneous Output Register. The selectable port addresses
- are either hex '3ba' or alternatively, hex '3da'.
-
- See {6.09.01} Miscellaneous Output Register.
-
- A read of this register resets the write state associated with the
- attribute controller write port 3c0h. This ensures that the first
- write to port 3c0h will select the Attribute Address Register thus
- permitting specification of the index for the internal register to
- be accessed next.
-
- See {6.07.01} Attribute Address Register.
-
-
- <0> Inverted Display Enable Status
- ------------------------------
-
- <=0> This represents the active image scan line display time, where
- the display is not blanked. This status is set dynamically in
- real-time, so can be used by software to synchronise operation
- with display activity.
-
- <=1> The display is in a blanking period. This might be either of
- horizontal or vertical blanking. It is possible to decide on
- the basis of the vertical interrupt state, or by using timing
- information to make the deduction.
-
- See Vertical Retrace State, below.
- See {6.09.03} Input Status Register Zero.
-
-
- <1> Reserved. Always <=0>.
- -----------------------
-
-
- <2> Reserved. Always <=0>. {Trident 8900 <=1>.}
- -----------------------
-
-
- <3> Vertical Retrace State
- ----------------------
-
- <=0> The display is in an active state, which might in practise mean
- that information is being displayed, or a horizontal retrace is
- in progress. However, there is no vertical retrace active.
-
- <=1> The display is in a vertical retrace period. The exact time at
- which the display entered this state can be determined by means
- of software continuously inspecting this state, until the start
- of vertical retrace is detected. If the software maintains all
- operations in approximate synchronism thereafter, a synchronise
- becomes possible in a comparatively short time after each frame
- is completed.
-
-
- <5..4> Video Sampling State
- --------------------
-
- <=00> Sampled digital video data as selected by option.
- <=01> Sampled digital video data as selected by option.
- <=10> Sampled digital video data as selected by option.
- <=11> Sampled digital video data as selected by option.
-
- These two bits have a significance determined by an option setting.
- They are provided for diagnotic use, and can be used to sample the
- bits sent out from the attribute controller to the external colour
- palette. There are 8 bits sent in total so there must be means to
- select those to be sampled.
-
- See {6.07.20} Colour Plane Enable Register.
-
-
- <7..6> Reserved. Always <=00>.
- ------------------------
-
-
-
-
- 6.10 Register specifications: Special Registers
- ==== ==========================================
- Trident 8900 only
- ==== ==========================================
- standard register officially undocumented
- ==== ==========================================
-
-
- 6.10.01 Hardware Version Register {new definition} { 3c5h 0bh R-- }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.05} Mode Control Register 1.
-
-
- Note that reading this register has a special side effect for Trident
- 8900 VGA controller chips.
-
- The definitions for the two mode control registers are transformed to
- their new definitions.
-
- See {6.10.04} Mode Control Register 2.
- See {6.10.05} Mode Control Register 1.
-
-
- <3..0> Chip version identification {Trident}
- ---------------------------
-
- <=0000> Unassigned.
- <=0001> Unassigned.
- <=0010> Trident 8800CS
- <=0011> Trident 8900B
- <=0100> Trident 8900C
- <=0101> Unassigned.
- <=0110> Unassigned.
- <=0111> Unassigned.
- <=1000> Unassigned.
- <=1001> Unassigned.
- <=1010> Unassigned.
- <=1011> Unassigned.
- <=1100> Unassigned.
- <=1101> Unassigned.
- <=1110> Unassigned.
- <=1111> Unassigned.
-
-
- <7..4> Reserved.
- ---------
-
-
-
-
- 6.10.02 Version Selector Register {old definition} { 3c5h 0bh --W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.04} Mode Control Register 2.
- Cross reference with {6.10.05} Mode Control Register 1.
-
-
- Note that writing this register has a special side effect for Trident
- 8900 VGA controller chips.
-
- The definitions for the two mode control registers are transformed to
- their old definitions. The data written is irrelevant, as it will be
- ignored. It is the write operation which indicates the definition is
- to be changed.
-
- See {6.10.04} Mode Control Register 2.
- See {6.10.05} Mode Control Register 1.
-
-
-
-
- 6.10.03 Configuration Port Register 1 { 3c5h 0ch R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.05} Mode Control Register 1. {Old definition.}
- Cross reference with {6.10.05} Mode Control Register 1. {New definition.}
-
-
- This register is read/write only for Trident 8900.
- This register can be write protected by option setting.
-
- See {6.10.05} Mode Control Register 1. {New definition.}
-
- There are two separate definitions for this register, as
- determined by the NMI state option setting.
-
- See {6.10.05} Mode Control Register 1. {Old definition.}
-
-
- -----------------------------------------------------------------------------
- Definition {only when NMI disabled}
- -----------------------------------------------------------------------------
-
-
- <0> Address Decode Source
- ---------------------
-
- <=0> Employ latched system address for A16 decode.
- <=1> Employ unlatched A19..A17 system address for A16 decode.
-
-
- <1> ROM Chip Count Specify
- ----------------------
-
- <=0> Two BIOS ROM chips present.
- <=1> One BIOS ROM chip present.
-
-
- <2> Reserved.
- ---------
-
-
- <3> ROM Address Span Specify
- ------------------------
-
- <=0> Decode 24K ROM BIOS address space.
- <=1> Decode 32K ROM BIOS address space.
-
-
- <4> VGA Control Port Specify
- ------------------------
-
- <=0> Select hex '46e8' as VGA Control Port.
- This is a standard plug-in board control port address.
-
- <=1> Select hex '3c3' as VGA Control Port.
- This is a standard motherboard control port address.
-
-
- <6..5> DRAM Configuration
- ------------------
-
- <=00> 64K by 4 bits {either 8 or 16 chips}.
- <=01> 256K by 4 bits {2 chips}.
- <=10> 256K by 4 bits {4 chips}.
- <=11> 256K by 4 bits {8 chips}.
-
-
- <7> DRAM Access Width
- -----------------
-
- <=0> 8 bit memory access.
- <=1> 16 bit memory access.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- -----------------------------------------------------------------------------
- Definition {only when NMI enabled}
- -----------------------------------------------------------------------------
-
-
- <0> Software Status
- ---------------
-
- Read and write to this bit by software to store a binary status flag.
-
-
- <1> NMI State {Non Maskable Interrupt State}
- ----------------------------------------
-
- This state has influence over the interpretation of this register.
- This interpretation only exists when the NMI state is set <=1>.
- Therefore the NMI state can only be turned off here.
-
- <=0> NMI Disable.
- Remove this interpretation of the register.
-
- <=1> NMI Enable.
- Consistent with this register interpretation.
-
-
- <3..2> Testing Bits
- ------------
-
- <=00> Manufacturing test.
- <=01> Manufacturing test.
- <=10> Manufacturing test.
- <=11> Normal operation.
-
-
- <7..4> NMI Vector Enable
- -----------------
-
- <=0000> No NMI vector specified.
- <=0001> NMI vector is specifed as hex '3x8'.
- <=0010> NMI vector is specifed as hex '3d9'.
- <=0011> Illegal value.
- <=0100> NMI vector is specifed as hex '3dd'.
- <=0101> Illegal value.
- <=0110> Illegal value.
- <=0111> Illegal value.
- <=1000> NMI vector is specifed as hex '3bf'.
- <=1001> Illegal value.
- <=1010> Illegal value.
- <=1011> Illegal value.
- <=1100> Illegal value.
- <=1101> Illegal value.
- <=1110> Illegal value.
- <=1111> Illegal value.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- 6.10.04 Mode Control Register 2 { 3c5h 0dh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.04.03} Clocking Mode Register.
- Cross reference with {6.04.05} Character Map Select Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.16} Cursor Location High Register.
- Cross reference with {6.05.17} Cursor Location Low Register.
- Cross reference with {6.05.22} Underline Location Register.
- Cross reference with {6.06.07} Graphics Mode Register.
- Cross reference with {6.07.18} Attribute Mode Control Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.01} Hardware Version Register {new definition}.
- Cross reference with {6.10.02} Version Selector Register {old definition}.
- Cross reference with {6.10.07} CRTC Module Testing Register.
-
-
- This register has two different interpretations depending upon the
- last transaction to either of the following registers:
-
- See {6.10.01} Hardware Version Register {new definition}.
- See {6.10.02} Version Selector Register {old definition}.
-
-
- -----------------------------------------------------------------------------
- New Definition
- -----------------------------------------------------------------------------
- See {6.10.01} Hardware Version Register {new definition}.
-
-
- <0> Dot Clock Extended Select
- -------------------------
-
- This bit extends the clock frequency select bits already available
- elsewhere from 2 bits to 3 bits. This bit is the high order bit.
-
- See {6.09.01} Miscellaneous Output Register.
-
- <=0> Select normal clocks.
- <=1> Select extended clocks.
-
-
- <2..1> Dot Clock Division Ratio Select
- -------------------------------
-
- The dot clock frequency can be selectively divided to provide other
- useful frequencies without need for additional oscillators.
-
- <=00> No division.
- <=01> Division ratio is 2.0
- <=10> Division ratio is 4.0
- <=11> Division ratio is 1.5
-
- See {6.04.03} Clocking Mode Register.
-
-
- <3> Software Status
- ---------------
-
- Read and write to this bit by software to store a binary status flag.
-
-
- <5..4> Software Status
- ---------------
-
- Read and write to these bits by software to store a pair of binary
- status flags.
-
-
- <7..6> General Purpose Outputs
- -----------------------
-
- No documented function. There are two VGA controller chip outputs
- which can be used to control aspects of a subsystem as the designer
- wishes. These bits control the logic levels on these two hardware
- lines. Their use is therefore totally design specific. These are
- Trident 8900 outputs only.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- -----------------------------------------------------------------------------
- Old Definition
- -----------------------------------------------------------------------------
- See {6.10.02} Version Selector Register {old definition}.
-
-
- <2..0> Video Generation Mode Select
- ----------------------------
-
- <=000> VGA mode {with analogue monitor} select.
- <=001> Not used.
- <=010> EGA mode {with analogue monitor} select.
- <=011> EGA mode {with TTL monitor} select.
- <=100> CGA, MDA, Hercules modes {with analogue monitor} select.
- <=101> CGA, MDA, Hercules modes {with TTL monitor} select.
- <=110> Not used.
- <=111> Not used.
-
- These options can alter the significance of an option bit in
- another register. {Multipurpose Select bit.}
-
- See {6.10.07} CRTC Module Testing Register.
-
-
- <3> Processor Bandwidth during Blanking
- -----------------------------------
-
- <=0> Normal access.
- <=1> Provide full bandwidth during blanking.
-
-
- <4> Memory Plane Architecture Select
- --------------------------------
-
- <=0> Planes 0 .. 3 active.
- <=1> Planes 0 .. 7 active.
-
-
- <5> DRAM Clock Control
-
- <=0> Enable DRAM clock.
- <=1> Inhibit DRAM clock.
-
-
- <7..6> Character Set Select High Extend
- --------------------------------
-
- These bits are used to select the character set base address in the
- display image memory plane 2. hey provide two high order bits such
- that 4 times the number of character fonts can be selected over the
- basic VGA architecture.
-
- See {6.04.05} Character Map Select Register.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- 6.10.05 Mode Control Register 1 { 3c5h 0eh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
- Cross reference with {6.04.06} Sequencer Memory Mode Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.06.08} Miscellaneous Register.
- Cross reference with {6.10.01} Hardware Version Register {new definition}.
- Cross reference with {6.10.02} Version Selector Register {old definition}.
- Cross reference with {6.10.03} Configuration Port Register 1.
- Cross reference with {6.10.06} Power-up Mode Register 2.
- Cross reference with {6.10.13} Source Address Register.
- Cross reference with {6.10.14} Source Address Enable Register.
-
-
- This register has two different interpretations depending upon the
- last transaction to either of the following registers:
-
- See {6.10.01} Hardware Version Register {new definition}.
- See {6.10.02} Version Selector Register {old definition}.
-
- The interpretations and layout of the Source Address Register match
- exactly those for this register, provided the facility is enabled.
-
- See {6.10.13} Source Address Register.
- See {6.10.14} Source Address Enable Register.
-
-
- -----------------------------------------------------------------------------
- New Definition
- -----------------------------------------------------------------------------
- See {6.10.01} Hardware Version Register {new definition}.
-
-
- This new definition is suitable for high resolution graphics use.
- To use the features correctly, the processor display image memory
- must be set to hex 'a0000' for 64K bytes length.
-
- See {6.06.08} Miscellaneous Register.
-
-
- <0> Segment Selector
- ----------------
-
- <=0> Select lower 64K of 128K page.
- <=1> Select upper 64K of 128K page.
-
-
- <1> Page Selector
- -------------
-
- Caution! These bits are WRITTEN with opposite polarity to that which
- is actually required.
-
- READ SENSE !
- <=0> Selected bank is LOWER 128K of 256K bank.
- <=1> Selected bank is upper 128K of 256K bank.
-
- WRITE SENSE !
- <=0> Select UPPER 128K of 256K bank.
- <=1> Select lower 128K of 256K bank.
-
-
- <3..2> Bank Selector
- -------------
-
- <=00> Select 256K bank 0. {Power on default, lowest memory bank}
- <=01> Select 256K bank 1.
- <=10> Select 256K bank 2.
- <=11> Select 256K bank 3. {Highest memory bank}
-
-
- <6..4> Software Status
- ---------------
-
- Read and write to these bits by software to store a triple of binary
- status flags.
-
- These bits can be made subject to write protection by the option
- Write Protection State, immediately below.
-
-
- <7> Write Protection State
- ----------------------
-
- This state controls write protection for Software Status, immediately
- above, in addition to some other registers.
-
- See {6.10.03} Configuration Port Register 1.
- See {6.10.06} Power-up Mode Register 2.
-
- <=0> Write Protect. {Default}
- <=1> Write Permit.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- -----------------------------------------------------------------------------
- Old Definition
- -----------------------------------------------------------------------------
- See {6.10.02} Version Selector Register {old definition}.
-
-
- <0> Display Access Bank Selector
- ----------------------------
-
- This bit controls addresses for display generation only,
- not for display image memory processor access.
-
- <=0> Select lower 512K bank. {Default}
- <=1> Select upper 512K bank.
-
-
- <2..1> Processor Access Bank Selector
- ------------------------------
-
- This bit controls addresses for processor access only,
- not for display generation.
-
- <=00> Select 256K bank 0. {Power on default, lowest memory bank}
- <=01> Select 256K bank 1.
- <=10> Select 256K bank 2.
- <=11> Select 256K bank 3. {Highest memory bank}
-
-
- <3> DRAM Access Width
- -----------------
-
- <=0> 8 bit memory access.
- <=1> 16 bit memory access.
-
-
- <4> Reserved for Dot Clock Extended Select
- --------------------------------------
-
- Not implemented at present {Trident 8900}.
-
-
- <5> NMI State {Non Maskable Interrupt State}
- ----------------------------------------
-
- This state has influence over the interpretation of other registers.
-
- See {6.10.03} Configuration Port Register 1.
-
- <=0> NMI Enable.
- <=1> NMI Disable.
-
-
- <6> Interrupt Request Polarity Select
- ---------------------------------
-
- <=0> Positive logic polarity.
- <=1> Negative logic polarity.
-
-
- <7> Clock Pins Function Select
- --------------------------
-
- There are two clock pins available for the Trident 8900, which can be
- used either to select an external oscillator, or to accept oscillator
- outputs. They are denoted CLK2, CLK3.
-
- When used to select an external oscillator these pins output from the
- VGA controller to the external environment.
-
- When accepting external oscillator generated clock signals, the pins
- act as input pins.
-
- <=0> Select INPUT operation for CLK2, CLK3 pins.
- <=1> Select OUTPUT operation for CLK2, CLK3 pins.
-
-
- -----------------------------------------------------------------------------
-
-
-
-
- 6.10.06 Power-up Mode Register 2 { 3c5h 0fh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.05} Mode Control Register 1. {New Definition}
-
-
-
- <3..0> DIP Switch Image
- ----------------
-
- These bits are a copy of the configuration DIP switch settings.
- Note the inverted polarity!
-
- <=0> DIP switch is ON.
- <=1> DIP switch is OFF.
-
-
- <4> Bus Protocol Select
- -------------------
-
- <=0> Micro channel bus protocol is selected.
- <=1> ISA PC/AT bus protocol is selected.
-
-
- <5> Input Output Address Map Select
- -------------------------------
-
- <=0> Select alternate input output address map at hex '2xx'.
- <=1> Select ISA input output address map at hex '3xx'.
-
-
- <6> ROM BIOS Address Decode Enable
- ------------------------------
-
- <=0> ROM address decode is disabled.
- <=1> ROM address decode is enabled.
-
-
- <7> ROM BIOS Data Path Width
- ------------------------
-
- <=0> 8 bit wide BIOS ROM.
- <=1> 16 bit BIOS ROM.
-
-
-
-
- 6.10.07 CRTC Module Testing Register { 3?5h 1eh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.05.01} CRT Controller Address Register.
- Cross reference with {6.05.02} Horizontal Total Register.
- Cross reference with {6.05.03} Horizontal Display Enable End Register.
- Cross reference with {6.05.04} Start Horizontal Blanking Register.
- Cross reference with {6.05.05} End Horizontal Blanking Register.
- Cross reference with {6.05.06} Start Horizontal Retrace Pulse Register.
- Cross reference with {6.05.07} End Horizontal Retrace Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.09} CRT Controller Overflow Register.
- Cross reference with {6.05.10} Preset Row Scan Register.
- Cross reference with {6.05.11} Maximum Scan Line Register.
- Cross reference with {6.05.14} Start Address High Register.
- Cross reference with {6.05.15} Start Address Low Register.
- Cross reference with {6.05.18} Vertical Retrace Start Register.
- Cross reference with {6.05.19} Vertical Retrace End Register.
- Cross reference with {6.05.23} Start Vertical Blanking Register.
- Cross reference with {6.05.24} End Vertical Blanking Register.
- Cross reference with {6.05.25} CRTC Mode Control Register.
- Cross reference with {6.09.01} Miscellaneous Output Register.
- Cross reference with {6.10.04} Mode Control Register 2. {Old Definition}
-
-
- <0> Horizontal Clock Select
- -----------------------
-
- <=0> Normal operation. {Power on default}
- <=1> Manufacturing test.
-
-
- <1> Character Clock Select
- ----------------------
-
- <=0> Normal operation. {Power on default}
- <=1> Manufacturing test.
-
-
- <2> Interlace Enable
- ----------------
-
- <=0> Non-interlace display generation mode. {Power on default}
- <=1> Interlace display generation mode.
-
-
- <3> Multipurpose Select
- -------------------
-
- --------------------------------------------------------------------
-
- Vertical Retrace Clock Edge Select
- ==================================
-
- This operates only in CGA, MDA modes.
-
- See {6.10.04} Mode Control Register 2. {Old Definition}
-
- <=0> Vertical retrace on rising clock edge. {Power on default}
- <=1> Vertical retrace on falling clock edge.
-
- --------------------------------------------------------------------
-
- Font Load Address Select
- ========================
-
- This operates only in EGA, VGA modes.
-
- See {6.10.04} Mode Control Register 2. {Old Definition}
-
- <=0> Load from low address.
- <=1> Load from high address.
-
- --------------------------------------------------------------------
-
-
- <4> CRT Controller Register Protection State
- ----------------------------------------
-
- <=0> No protection. {Power on default}
- <=1> Protection applied.
-
-
- The following register indexes are protected:
-
-
- Register Index
- ===-----------
-
- Bit Numbers
- === ===--------
-
- Register Description and Bit Description
- === === ========================================----------------
-
- 00h 0-7 {6.05.02} Horizontal Total Register.
-
- 01h 0-7 {6.05.03} Horizontal Display Enable End Register.
-
- 02h 0-7 {6.05.04} Start Horizontal Blanking Register.
-
- 03h 0-7 {6.05.05} End Horizontal Blanking Register.
-
- 04h 0-7 {6.05.06} Start Horizontal Retrace Pulse Register.
-
- 05h 0-7 {6.05.07} End Horizontal Retrace Register.
-
- 06h 0-7 {6.05.08} Vertical Total Register.
-
- 07h 0-7 {6.05.09} CRT Controller Overflow Register.
-
- 09h 7 {6.05.11} Maximum Scan Line Register.
- bit --> Double Scan Line Display.
-
- 10h 0-7 {6.05.18} Vertical Retrace Start Register.
-
- 11h 0-7 {6.05.19} Vertical Retrace End Register.
-
- 15h 0-7 {6.05.23} Start Vertical Blanking Register.
-
- 16h 0-7 {6.05.24} End Vertical Blanking Register.
-
- 17h 2 {6.05.25} CRTC Mode Control Register.
- bit --> Horizontal Retrace Divisor.
-
- ----------------------------------------------------------------------
-
-
- <5> Start Address Extension Bit 16
- ------------------------------
-
- This feature must be enabled. See Start Address Extension Enable,
- almost immediately below.
-
- See {6.05.14} Start Address High Register.
- See {6.05.15} Start Address Low Register.
-
-
- <6> Miscellaneous Output Register Protect State
- -------------------------------------------
-
- <=0> No protection. {Power on default}
- <=1> Protection applied.
-
- See {6.09.01} Miscellaneous Output Register.
-
-
-
- <7> Start Address Extension Enable
- ------------------------------
-
- This feature is not an ISA feature, so must be specially enabled by
- means of this option setting, before use.
-
- <=0> Disable start address extension bit 16.
- <=1> Enable start address extension bit 16.
-
-
-
-
- 6.10.08 Software Programming Register { 3?5h 1fh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.05.01} CRT Controller Address Register.
-
-
- This register provides means for storage and retrieval of software
- status associated, typically, with BIOS operation.
-
-
- <1..0> Reserved for BIOS use.
- ----------------------
-
- <=00> Memory size is 256K bytes.
- <=01> Memory size is 512K bytes.
- <=10> Memory size is 768K bytes.
- <=11> Memory size is 1024K bytes.
-
-
- <3..2> Software Status Bits
- --------------------
-
- Used for software defined purposes.
-
-
- <7..4> Reserved for BIOS use. Do NOT disturb.
- ---------------------------------------
-
-
-
-
- 6.10.09 CPU Latch Read Back Register { 3?5h 22h R-- }
- ======= ==================================================================
- standard register officially undocumented
- ======= ==================================================================
-
-
- Cross reference with {6.06.02} Set/Reset Register.
- Cross reference with {6.06.06} Read Map Select Register.
- Cross reference with {6.06.07} Graphics Mode Register.
-
-
- This is a standard VGA controller register which was never
- officially documented.
-
-
- <7..0> CPU Latch Read Back
- -------------------
-
- This register provides access to the four data latches used in the
- data path between the processor and the display image memory. The
- latch number directly associates with the image memory plane which
- receives data from the latch during memory writes by the processor
- so this plane is specified by the Read Map Select Register.
-
- See {6.06.02} Set/Reset Register.
- See {6.06.06} Read Map Select Register.
- See {6.06.07} Graphics Mode Register.
-
-
-
-
- 6.10.10 Attribute State Read Back Register { 3?5h 24h R-- }
- ======= ==================================================================
- standard register officially undocumented
- ======= ==================================================================
-
-
- Cross reference with {6.07.01} Attribute Address Register.
- Cross reference with {6.10.11} Attribute Index Read Back Register.
-
-
- This is a standard VGA controller register which was never
- officially documented.
-
-
- -------------------------------------------------------------------------------
- standard register officially undocumented
- -------------------------------------------------------------------------------
-
-
- <4..0> Attribute Controller Index
- --------------------------
-
- This provides the index value which selects an attribute controller
- register so that the processor can obtain access. This value is
- defined by writing to the attribute controller address register and
- the appropriate internal associated state must be defined.
-
- See {6.07.01} Attribute Address Register.
-
-
- <5> Colour Palette Address Source {Internal palette}
- -----------------------------
-
- <=0> Colour palette is accessed only by the processor, no video can
- be generated.
-
- <=1> Colour palette generates video, processor access is denied.
-
-
- <6> Reserved.
- ---------
-
-
- <7> Attribute State Read Back
- -------------------------
-
- <=0> This specifies that the Attribute controller is set to point to
- the attribute controller address register. This permits a new
- attribute controller register index value to be specified.
-
- <=1> This specifies that the Attribute controller is set to point to
- one particular internal attribute controller register. This is
- specified by the index value in the address register, and it is
- this indexed register which will be accessed by the processor.
-
-
- -------------------------------------------------------------------------------
-
-
-
-
- -------------------------------------------------------------------------------
- Trident 8900 only
- -------------------------------------------------------------------------------
- See {6.10.11} Attribute Index Read Back Register.
-
-
- <6..0> Reserved. Undefined.
- ---------------------
-
-
- <7> Attribute State Read Back
- -------------------------
-
- <=0> This specifies that the Attribute controller is set to point to
- the attribute controller address register. This permits a new
- attribute controller register index value to be specified.
-
- <=1> This specifies that the Attribute controller is set to point to
- one particular internal attribute controller register. This is
- specified by the index value in the address register, and it is
- this indexed register which will be accessed by the processor.
-
-
- -------------------------------------------------------------------------------
-
-
-
-
- 6.10.11 Attribute Index Read Back Register { 3?5h 26h R-- }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.07.01} Attribute Address Register.
- Cross reference with {6.10.10} Attribute State Read Back Register.
-
-
- <4..0> Attribute Index
- ---------------
-
- This binary field indicates the index value which determines which of
- the internal registers will be accessed by the processor assuming the
- correct required internal state is present.
-
- See {6.07.01} Attribute Address Register.
-
- An alternative ISA register may be available on non-Trident hardware,
- which may provide a slightly more standard way to obtain this data.
-
- See {6.10.10} Attribute State Read Back Register.
-
-
- <7..5> Reserved.
- ---------
-
-
-
-
- 6.10.12 Clear Vertical Display Enable Register { 3?5h 3nh W-- }
- ======= ==================================================================
- standard register officially undocumented
- ======= ==================================================================
-
-
- Note: the index address 'n' indicates any value, that is, a don't care value.
-
-
- Cross reference with {6.05.01} CRT Controller Address Register.
- Cross reference with {6.05.08} Vertical Total Register.
- Cross reference with {6.05.20} Vertical Display Enable End Register.
-
-
- This is a standard VGA controller register which was never
- officially documented.
-
-
- <0> Clear Vertical Display Enable
- -----------------------------
-
- <=0> Do not clear the vertical display enable state.
-
- See {6.05.08} Vertical Total Register.
- See {6.05.20} Vertical Display Enable End Register.
-
- <=1> Clear the vertical display enable state. This has the effect
- of immediately blanking the screen and causes the generation
- of display data to terminate. The sequencer then changes the
- image memory timing so permitting greater bandwidth access by
- the processor. The display will be subject to disturbance if
- appropriate synchronisation is not provided. In any case the
- use of this facility will produce some flicker.
-
- The character row counter achievement of the vertical total in
- the usual manner will set the vertical display enable state so
- permitting normal production of the following display frame.
-
- See {6.05.08} Vertical Total Register.
- See {6.05.20} Vertical Display Enable End Register.
-
- This might be used to temporarily increase the processor speed
- of image update at the expense of display disturbance.
-
-
-
- <7..1> Unused. Any value can be present.
- ----------------------------------
-
-
-
-
- 6.10.13 Source Address Register { 3cfh 0eh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.05} Mode Control Register 1.
- Cross reference with {6.10.14} Source Address Enable Register.
-
-
- There is a difficulty of low speed when manipulating large graphics
- images across memory bank boundaries. This arises when an image is
- located in a number of display memory banks, only one of which will
- be accessible to the processor at any given moment.
-
- In this situation, it is often required to copy a part of the image
- from one bank into another. This entails performing a read, then a
- change of processor mapping into the display memory following which
- a corresponding processor write can take place.
-
- Needless to say, this whole operation is cumbersome in the extreme.
-
- For this reason, it is possible to specify a source and destination
- bank selection invoked by processor read write access respectively.
- In this way any processor read is directed to the source address in
- the source bank while a write access is directed to the destination
- bank in similar manner.
-
- This Source Address Register specifies the details of the source
- address, while the Mode Control Register 1 specifies all details
- for the destination address.
-
- See {6.10.05} Mode Control Register 1.
-
- This facility must be enabled appropriately before use, since it is
- not a standard VGA controller capability.
-
- See {6.10.14} Source Address Enable Register.
-
-
-
-
- 6.10.14 Source Address Enable Register { 3cfh 0fh R/W }
- ======= ==================================================================
- Trident 8900 only
- ======= ==================================================================
-
-
- Cross reference with {6.10.05} Mode Control Register 1.
- Cross reference with {6.10.13} Source Address Register.
-
-
- This register controls the apparent existance of a very useful feature
- which can greatly speed up graphics programming image manipulations if
- correctly used.
-
- See {6.10.05} Mode Control Register 1.
- See {6.10.13} Source Address Register.
-
-
- <0> Source Address Enable
- ---------------------
-
- <=0> Disable the Source Address Register.
- <=1> Enable the Source Address Register.
-
-
- <7..1> Reserved. Always <=0000000>.
- -----------------------------
-
-
-
-
- 6.s Summary
- ==== =======
-
- Details have been given of some special registers which provide for the most
- part, proprietary features concerned with VGA architecture extension. These
- proprietary details relate in this case to the Trident 8900 chip.
-
- There are however, certain features described here which are standard in that
- the ISA contains these features, yet they remain officially undocumented. It
- has only been possible to decide on their existance, by means of a program of
- reverse engineering. This analyses a semiconductor chip in order to obtain a
- complete logic schematic from the circuit physical structure.
-
- Using these undocumented yet standard features may cause difficulty because
- companies which design their compatible products on the basis of documented
- interfaces may not have performed the reverse engineering necessary to make
- a fully hardware compatible product.
-
- The simple fact is with a device as complex as the VGA controller, it is very
- important to obtain original technical material before starting any serious
- programming work. Most importantly, before purchase of a VGA controller, is
- the possibility for review of such technical material as may be available in
- order to assess it for quality.
-
-
-
-
- 7. VGA controller: architecture
- ==== ============================
-
-
- 7.01 Controller timing generator: { Sequencer }
- ==== ===========================================
-
-
- The video graphics array controller is a complex collection of distinct logic
- blocks each of which has various connections to other such blocks. Since the
- notion of time used by each logic block must agree with that used by associated
- blocks a special set of timing, that is, clock pulses is distributed throughout
- the device. Each clock pulse keeps all the logic which uses it in common step,
- so that all the events which must be maintained in lock-step remain so at all
- times. This is the purpose of a clock pulse. It regulates the changing flow
- of events within a logic circuit.
-
- There will be more than one clock pulse needed by such a complex device as the
- VGA controller chip, so it becomes important for each clock pulse to maintain
- a particular relationship with all other clock pulses. This is so as to permit
- the reliable and timely flow of information between circuitry which determines
- events using distinct time scales. These time scales are naturally represented
- by the different periods associated with each of the separate clock pulses. As
- an example of just two distinct time scales we will be interested in using, we
- can think of the horizontal and vertical synchronisation pulses that the image
- generator regularly sends to a display unit. In this way, we can see that the
- synchronisation signals are really just special clock pulses sent by the image
- generator to the display unit in order to keep the display unit in lock-step,
- therefore ensuring the correct image is displayed at all times.
-
- There are essentially two distinct image generation modes available. Text mode
- creates a text image on the display, possibly using a variety of character sets
- whilst graphics mode dispenses with characters, and presents purely graphical
- images. These two modes are handled quite differently within the controller.
- Note that it is still possible to present text for display while using graphics
- modes, but in this case, software will have to prepare the character outlines
- ready for display. The distinction between graphics mode presentation of text
- and text mode presentation of text is simply that in the latter, hardware takes
- care of all the character formation chores, which results in much faster output
- of text than would be possible using software in graphics mode. Of course, it
- is only possible to create text in text mode, whereas text and graphics can be
- created in graphics mode.
-
- The sequencer generates a number of timing signals, that is, clock pulses. We
- list the more interesting ones below:-
-
- 1. Dot_clock
- 2. Character_clock
-
- The dot clock is the fundamental unit of timing from which all other timing is
- derived for image generation. This clock defines the amount of time available
- for displaying one pixel. It therefore determines the image information output
- frequency from the image generator to the display unit. Each time this clock
- marks a new pixel period, the image generator must transmit all information for
- defining the next pixel to the display. {There is one exception to this which
- distinguishes 256 colour packed pixel mode from other graphics display modes.}
-
- Facilities are provided to change the oscillator associated with the dot clock
- which has the effect of selecting a different dot clock frequency. Also it is
- possible to invoke a frequency division on the selected oscillator frequency,
- in order to produce new frequencies without using more oscillator units.
-
- The character clock is derived from the dot clock, and one period of this clock
- represents the width of a single character output to the display unit. This is
- only relevant when the image generator is operating in text mode. The character
- clock can either represent characters of width 8 pixels width, or alternatively
- of 9 pixels width.
-
- The character clock represents the unit of timing for display unit purposes and
- this is true in either of text display mode or graphics display mode.
-
-
-
-
- 7.02 Display timing generator: { CRT Controller }
- ==== =============================================
-
-
- The Cathode Ray Tube Controller accepts the Character_clock from the Sequencer
- and generates the synchronisation signals required to keep the display unit in
- lock-step with the image generator. All the timing for horizontal and vertical
- synchronisation is defined in terms of character widths. For this reason, the
- CRT Controller is also responsible for generating the hardware cursor which can
- only appear in character aligned positions within the display image. Some of
- the signals developed by the CRT controller are:
-
- 1. Horizontal Synchronisation
- 2. Horizontal Blanking
- 3. Vertical Synchronisation
- 4. Vertical Blanking
- 5. Display Enable
- 6. Cursor Enable
- 7. Underline Enable
- 8. Increment Horizontal Character Counter
- 9. Reset Horizontal Character Counter
- 10. Increment Character Row Counter
- 11. Reset Character Row Counter
- 12. Increment Character Font Scan Line Counter
- 13. Reset Character Font Scan Line Counter
- 14. Increment Display Memory Address Counter
- 15. Reset Display Memory Address Counter
-
- The effect of these signals is explored fully, in the main body of the text.
- These control the intimate details of all information required from display
- image memory in text or graphics mode display generation. A display address
- is generated by the CRT Controller which then provides the display image data
- to the graphics controller, and thence to the attribute controller.
-
-
-
-
- 7.03 Image information processor: { Graphics Controller }
- ==== =====================================================
-
-
- The Graphics Controller acts as an interface between the processor and display
- image memory, and also between the CRT Controller and display image memory. A
- simultaneous access attempt by both the processor and the CRT Controller gives
- the access to the CRT Controller in all cases.
-
- The Graphics Controller provides the processor with extensive image processing
- ability for various graphics display modes which are available. Facilities to
- efficiently process multiplane image data are provided, with very low overhead.
-
- The Graphics Controller provides pixel panning capability for generated image
- data, which does not depend upon text mode or graphics mode operation. Shift
- registers provide conversion of multiplane display image memory format to the
- serial multiplane parallel format required by the attribute controller. They
- have special functionality built in so that a wide range of these conversions
- can be easily handled. Shift register interconnections and architecture will
- change depending upon the graphics mode in use.
-
-
-
-
- 7.04 Image presentation processor: { Attribute Controller }
- ==== =======================================================
-
-
- The Attribute Controller accepts image data from the Graphics Controller and
- processes it before sending it out to the digital to analogue converters for
- final display. This involves performing colour selection code translation,
- so that less image memory can be used for storage of images which use small
- sets of colours. The translation uses an internal colour palette register
- which accepts a 4 bit colour code and produces either a 4 or 6 bit output.
-
- Bit shift pixel panning is implemented, to be used in conjuction with those
- complementary facilities provided by the Graphics Controller. Selection of
- display colour during blanking periods is also performed.
-
- In text mode display generation, the attribute byte which is associated with
- every text character is processed into the video data, to provide a blinking
- cursor, underlining of text, and colour selection functions.
-
- The output from the Attribute Controller is a stream of 8 bit wide image data
- which specifies a pixel colour, suitable for input to the DAC Support Logic.
-
-
-
-
- 7.05 Colour presentation processor: { DAC Support Logic }
- ==== =====================================================
-
-
- The Digital to Analogue Converter support logic accepts 8 bit colour data, and
- translates it into either 18 bit or 24 bit colour data, to drive three primary
- colour electron guns in the display unit. The translation is performed with a
- large look-up table memory unit, termed the external colour palette. This can
- control the displayed colour set with a great degree of finess. There is also
- the possibility provided to edit some of the 8 bits of input data substituting
- zero bits for data bits on option. This provides for animation effects or for
- multiple image storage with very fast recall. This can be very useful for the
- support of hierarchical design systems.
-
-
-
-
- 7.s Summary
- ==== =======
-
-
- A very brief sketch has been given for each of the major logic blocks involved
- in producing a display image from data supplied by a processor. The functions
- described are explored in considerable detail in the main body of the text.
-
-
-
-
- 8. VGA controller: Text
- ==== ====================
-
- 8.01 Text image generation
- 8.02 Text font representation
- 8.03 Text attribute representation
- 8.04 Text character set extensions
- 8.05 Text mode support for graphics
-
-
- Chapter in preparation. Should be available for second edition.
- ----------------------------------------------------------------
-
-
-
-
- 9. VGA controller: Graphics
- ==== ========================
-
- 9.01 Graphic image generation
- 9.02 Graphic multi-plane memory
- 9.03 Graphic packed pixel memory
- 9.04 Graphic line drawing
- 9.05 Graphic object drawing
-
-
- Chapter in preparation. Should be available for second edition.
- ----------------------------------------------------------------
-
-
-
-
- 10. VGA controller: Hardware Interface
- === ==================================
-
-
- 10.01 Hardware connector layout
- ===== =========================
-
-
- This information is provided for completeness only. It is intended only as a
- guide. Further information should be sought if either serious design work or
- diagnostic work needs to be performed.
-
- The VGA subsystem pulls the Identity signal lines to +5V through a resistor.
- The display then selectively connects these lines to ground. The VGA then
- detects the signal level and interprets the code in the appropriate manner.
- Details are available on the coding scheme employed.
-
- See {10.03} Monitor auto-configuration operation.
-
-
-
-
- Video Connector Pinouts
- =======================
-
-
- Pin Number { 9 pin connector }
- ==-----------------------------
-
- Pin Number { standard 15 pin connector }
- == ==---------------------------------------
-
- Signal Description
- == == ==================---------------------------------------
-
-
- 1 1 Red intensity {analogue 75 ohms}
- 2 2 Green intensity {analogue 75 ohms}
- 3 3 Blue intensity {analogue 75 ohms}
- - 4 Identity bit 2 {logic pullup to +5V by VGA}
- - 5 Self test / must be grounded for use with 9 pin connector
- 6 6 Red intensity ground {analogue 75 ohms}
- 7 7 Green intensity ground {analogue 75 ohms}
- 8 8 Blue intensity ground {analogue 75 ohms}
- - 9 - no connection
- 9 10 Synch ground
- - 11 Identity bit 0 {logic pullup to +5V by VGA}
- - 12 Identity bit 1 {logic pullup to +5V by VGA}
- 4 13 Horizontal synch
- 5 14 Vertical synch
- - 15 - no connection
-
-
- ---------------------------------------------------------------------
-
-
-
-
- 10.02 Monitor auto-detection operation
- ===== ================================
-
-
- A VGA subsystem can be arranged to detect whether a monochrome display unit or
- alternatively, a colour display unit is in use. This is made possible through
- sensing the current flow in the lines carrying the analogue red green and blue
- pixel intensity signals from the image generator to the display unit.
-
- A colour display unit will make use of each one of these three signals, which
- can be detected by suitable hardware measurement of current flow. However, a
- monochrome display unit will only use the green signal. This difference will
- cause the video subsystem to select an operational mode suitable for the unit
- in use.
-
- A simplified schematic is given below showing the arrangement provided for the
- measurement of output current. Note that the software must read the status at
- the active video image generation time within a scan line. This is decided by
- means of the display enable status bit. This bit should be monitored so as to
- achieve synchonism with the program. Then, the measurement can be confidently
- made during the active display period of the horizontal scan. This involves a
- synchronisation with the vertical retrace so that the complete activity of the
- display can be accurately predicted in advance of the measurement.
-
- See {6.09.04} Input Status Register One.
-
- The software interface for this hardware detection operation is provided by a
- single status bit.
-
- See {6.09.03} Input Status Register Zero.
-
-
-
-
- Schematic of Video Output Current Measurement
- =============================================
-
-
-
-
- ---------
- | DAC | Red into
- | RED |...........r....> Display
- --------- | Unit
- |
- |
- |
- --------- |
- | DAC | | Green into
- | GREEN |........g.......> Display
- --------- | | Unit
- | |
- | |
- | |
- --------- | |
- | DAC | | | Blue into
- | BLUE |.....b..........> Display
- --------- | | | Unit
- | | |
- | | |
- | | |
- | | |
- | | | |-----*
- --------- | | r....>.| + *
- | VOLT | | | | compare *............
- | REFER-|..v.............>.| - * |
- | ENCE | | | | |-----* |
- --------- | | | |
- | | | |
- | | | |
- | | | |
- | | | |-----* |
- | | g.......>.| + * |
- | | | compare *......... |
- v.............>.| - * | |
- | | |-----* | |
- | | | |
- | | | |
- | | | |
- | | | |
- | | |-----* | |
- | b..........>.| + * | |
- | | compare *...... | |
- v.............>.| - * | | |
- |-----* | | |
- | | |
- | | |
- | | |
- | | |
- =============
- NOR GATE
- =============
- |
- |
- |
- |
- |
- =================
-
- STATUS BIT OUTPUT
-
- =================
-
-
- ---------------------------------------------------------
-
-
-
-
- 10.03 Monitor auto-configuration operation
- ===== ====================================
-
-
- There is another means for determining the type of display unit attached to a
- VGA subsystem. This depends on a simple code provided by the display unit to
- the VGA subsystem, according to a predefined convention.
-
-
- Identity bit 2
- =-------------
-
- Identity bit 1
- = =-------------
-
- Identity bit 0
- = = =-------------
-
- Significance
- = = = ============--------------------------------------
-
-
- 0 0 0 -- unassigned
-
- 0 0 1 -- unassigned
-
- 0 1 0 Interlaced colour display unit is connected
-
- 0 1 1 -- unassigned
-
- 1 0 0 -- unassigned
-
- 1 0 1 Monochrome display unit is connected
-
- 1 1 0 Non-interlaced colour display unit is connected
-
- 1 1 1 No display unit connected to VGA subsystem
-
-
- -----------------------------------------------------------------
-
-
- Note that strapping an identity signal line to ground has the effect of sending
- a binary zero to the VGA subsystem sensing logic.
-
- See {10.01} Hardware connector layout.
-
-
-
-
- 10.s Summary
- ==== =======
-
-
- A brief description of some of the hardware connections between a VGA subsystem
- and a corresponding display unit has been given.
-
-
-
-
- References {in alphabetic order by company name}
- ===============================================================================
-
-
- 001 82C456 Enhanced Flat Panel/CRT VGA Controller Data Sheet
- Chips and Technologies Inc.
-
-
- 002 HT216 VGA Controller
- Headland Technology Inc.
-
-
- 003 iAPX 86/88, 186/188 User's Manual, Programmer's Reference
- Intel Corporation
-
-
- 004 TVGA8900C Technical Reference Manual
- Trident Microsystems
-
-
- 005 Computer IC's 1990-1991 Data Book
- United Microelectronics Corporation
-
-
- 006 WD90C20/WD90C22 VGA Flat Panel Display Controllers
- Western Digital Corporation
-
-
- 007 Many other documents were consulted, being too numerous to mention.
- These generally clarified only a single point, which in many cases
- could only be understood in combination with many other documents.
- It is felt that mentioning all of these could only add to the very
- great confusion surrounding this whole area of subject matter. In
- some cases documents were found to be self contradictory. Some of
- the documents were found to be factually correct, but no framework
- was provided for practical use and understanding of the material.
-
- Very often, there was no cross reference between different aspects
- of the VGA operation. This presents what is felt by the author to
- be a difficult situation. It is hoped that this work will address
- the worst of these problems, and provide a useful framework within
- which real knowledge can be gained.
-
- At the same time, the reader should appreciate that there are many
- different proprietary products in the marketplace with each giving
- proprietary extensions to the basic architecture. It is vital for
- all serious work, that the user obtain all official technical data
- direct from the manufacturer concerned. That is, unless only BIOS
- access is to be gained to the VGA facilities provided. However it
- would be prudent even in this case to obtain technical data, since
- every BIOS is different, by definition. The best way to avoid any
- implementation problems is to remain as well informed as possible.
-
-
-
-
- Glossary
- ===============================================================================
-
-
- Please note that this glossary is vestigial in the extreme with the motivation
- for including it at all being completeness. However, it is unlikely that this
- paucity will impact significantly on the useability of this text, since jargon
- is relatively scarcely used. In those places where jargon is introduced there
- is normally an explanation provided, except for those terms which are so basic
- that a reader of this document must be expected to have knowledge of them.
-
-
-
-
- 80x86
- -------------
- A family of related processor chips, produced by Intel Corp. This
- processor family is important because it is used as the basis for
- all industry standard architecture computer systems.
-
-
- Analogue
- -------------
- A coding and interpretation scheme which does not rely on discrete
- steps. Instead, continuous variation of some characteristic such
- as voltage or current is used as the analogue of a represented
- value. Hence analogue, as opposed to digital, representation. A
- significant practical advantage of this representation is the lack
- of need for more than two wire connections, which can save expense
- for suitable systems. A display monitor might accept analogue or
- digital signals, but will be able to support many more colours if
- an analogue video signal is used. Contrast this with digital.
-
-
- BIOS
- -------------
- Basic Input Output System. This is a program which provides a set
- of services (usually standardised) to other programs. VGA systems
- usually have their own BIOS which permits the VGA to support those
- interfaces usually provided by an industry compatible architecture
- computer system to the software running on it.
-
-
- Blanking
- -------------
- The action of display unit operation inhibition, during the time
- required to reinitialise the display ready for production of the
- next part of the image. This is needed because an image is made
- up from a number of scan lines which are displayed left to right
- on the screen. To begin again at the left side the display must
- be inhibited, to prevent the retrace from disturbing the image.
- In practise, there are horizontal and vertical blanking periods,
- which perform a similar function in orthogonal directions.
-
-
- Bus
- -------------
- A means for transmitting and receiving information at high speed
- within the confines of a single computer system. Bus types that
- are used with VGA controllers fall into two categories. Either
- the ISA PC/AT bus is used, or sometimes, Micro channel bus. The
- latter is proprietary to IBM and is not so widely used by other
- manufacturers.
-
-
- CGA
- -------------
- Colour Graphics Array. A rather old, but still widely used video
- graphics standard which is principally of interest for emulation.
-
-
- Chip
- -------------
- A highly integrated electronic device which is implemented as a
- silicon integrated circuit. This makes possible the practical
- realisation of very complex circuits, such as processor chips
- and VGA controller chips.
-
-
- Clock
- -------------
- Almost all electronic systems operate by means of a regular signal
- which regulates in a uniform fashion, each information flow within
- the component circuits. Since this signal has a constant form, it
- has come to be known as a clock signal, or sometimes clock pulse.
-
- The practical significance of a clock is that it controls the data
- rate within a system. For this reason selecting a clock frequency is
- is vitally important for determining the quantity of data which is
- processed by, or transmitted from, a VGA controller.
-
- It is possible to derive a clock of lower frequency, directly from
- a master clock of higher frequency. In the VGA controller this is
- a very common occurence.
-
-
- CRT
- -------------
- Cathode Ray Tube. An important display technology which has been
- vitally important in establishing currently used video generation
- concepts and signal conventions. See tube.
-
-
- DAC
- -------------
- Digital to Analogue Converter. This is an electronic device which
- is able to convert a digital code into a high precision analogue
- signal suitable for describing an image in a form acceptable by a
- display unit. These devices operate at very high speed.
-
-
- Digital
- -------------
- A coding and interpretation scheme which relies upon discrete step
- representation of values typically using a binary coding alphabet.
- Each digit is represented by a signal value over two wires. This
- means that the scheme is very robust, but there is an attendant
- overhead cost in terms of the number of connections which must be
- made in order to convey digital information. Contrast this with
- analogue.
-
-
- DIP Switch
- -------------
- Dual In-line Plastic Switch. This is a miniture electronic switch
- component which is used to provide selectable option settings with
- hardware configuration use. Typically a bank of 4, 6, or 8 of the
- switches are employed, with each governing one particular feature.
- Such features are generally set once and then forgotten since they
- control hardware compatibility which does not often need changing.
-
-
- Display Unit
- -------------
- A device which accepts information and produces a visual image as
- a translation of that information. See monitor.
-
-
- Dot
- -------------
- A term used to describe a monochrome pixel. This term arises in
- connection with the dot clock which is a principle timing source
- for VGA controller and also therefore, display unit operation.
-
-
- DRAM
- -------------
- Dynamic Random Access Memory. A type of memory technology which
- stores data using a charged capacitor. As charge will leak from
- a capacitor, every so often all the stored data must be read out
- and replaced afresh, thereby restoring the charge strength. The
- process which performs the charge restitution is termed refresh.
- The refresh must be completed by accessing every DRAM address in
- a short period of time termed the refresh period. This time for
- refresh is measured in a small number of milli-seconds. See RAM.
-
-
- EGA
- -------------
- Extended Graphics Array. This is a video graphics standard which
- is becoming less important in numerical terms of installed system
- count, as time goes on. Emulation may be important for EGA.
-
-
- Emulation
- -------------
- The capability of a particular electronic device to mimic exactly
- another, different electronic device so that the operation of the
- former is indestinguishable from that of the latter. This can be
- important for maintaining compatibility between software produced
- over a long period of time, and a wide range of computer systems.
-
-
- Hercules
- -------------
- A Hercules Computer Technology trademark. This company produces
- video graphics image generators and Hercules refers particularly
- to a widely used product for which emulation can be helpful.
-
-
- Hardware
- -------------
- A description of electronic components, usually assembled into an
- electronic system, or subsystem. This represents an unchangeable
- structure which may provide facilities for selection of different
- interconnection schemes between constituent components. Any type
- of ability to vary the apparent internal structure, and therefore
- the externally visible behaviour of hardware is normally referred
- to as programmability. Such hardware may be programmed. Control
- of such hardware is exercised by a program which is distinguished
- from hardware by the term software.
-
-
- IBM
- -------------
- Inernational Business Machines, Corp. This company was the first
- to introduce MDA, CGA, EGA, VGA graphics controllers, with their
- associated display units. Many companies follow IBM in building
- products which are deemed IBM Compatible. VGA controller chips
- are a good example of this, although compatibility does have many
- limits in practise.
-
-
- Image Generator
- -------------
- An electronic device which accepts control information and image
- information from a processor and translates this into a form of
- information acceptable as input to a display unit.
-
-
- ISA
- -------------
- Industry Standard Architecture. This refers to a particular type
- of computer system usually built from widely available components
- which ideally fit together easily to produce a standard device of
- known capability. In practise, there may be difficulties because
- of subtle incompatibility between various components. Usually it
- is possible to provide a certain set of capabilities adequate for
- most practical purposes, in this manner.
-
-
- MDA
- -------------
- Monochrome Display Adaptor. This is a video graphics standard that
- has been important in times past, but which is now of interest for
- emulation purposes.
-
-
- Micro channel
- -------------
- A type of bus, which is proprietary to IBM.
-
-
- Monitor
- -------------
- An alternative term for display unit.
-
-
- MultiSync
- -------------
- A Nippon Electric Company (NEC) trademark. Describes a family of
- display units which are able to accept a number of distinct video
- signals with different characteristics. Importantly, the rate at
- which image information is transferred to the display unit can be
- changed so providing for a much higher definition image. This is
- achieved without any changes to the display unit, which can adapt
- to the video signals by analysing them. This automatically gives
- rise to any changes necessary in the display unit operation.
-
-
- NMI
- -------------
- Non Maskable Interrupt. This is a higher priority interrupt than
- any other interrupt available to the processor. Specifically, it
- is of higher priority than all maskable interrupts. This fact is
- often used to provide emulation facilities in software, triggered
- by certain hardware conditions. For example, write protection of
- special registers useful in emulation, is often achieved by using
- NMI interrupts in conjunction with special handler programs.
-
-
- PC/AT
- -------------
- Personal Computer, Model AT. This type of IBM compatible computer
- is one of the most ubiquitous in the world. Because of the force
- of sheer numbers, many software and hardware products have been
- built for use with this type of machine. VGA controller chips are
- normally configured for use with the bus provided by this machine.
-
-
- Pixel
- -------------
- Picture ELement. A display screen is made up from large numbers
- of elementary displayable elements. Every element is controlled
- quite independantly of all other elements. Since the assemblage
- of all the available elements constitutes a picture the smallest
- picture component has become known as a pixel. See dot.
-
-
- Processor
- -------------
- The computational device which acts as the seat of all activity in
- a computer system. Sometimes known as the CPU. The processor is
- the main determinant of capability for a computer system. It is
- implemented as a highly integrated electronic device.
-
-
- RAM
- -------------
- Random Access Memory. This type of memory technology is able to
- store and retrieve information at high speed and is able to give
- access to any address in the same uniform access time. There is
- no constraint such as sequential access to addresses, hence the
- term random. Any address can be accessed at any time with equal
- facility. Used for storing video image information in a digital
- form suitable for manipulation by an image generator. See DRAM.
-
-
- Refresh
- -------------
- A process used to maintain the information stored in a DRAM. For
- more details see the entries for RAM, and for DRAM.
-
-
- ROM
- -------------
- Read Only Memory. This type of memory technology is manufactured
- complete with all the information it is to contain. This data is
- immune to change so permanently required information such as font
- data describing the shape of the characters in a character set is
- usefully stored in this type of device. A BIOS is usually stored
- in a ROM. Contrast with RAM, DRAM.
-
-
- Software
- -------------
- The information associated with a particular function obtained by
- programming hardware, so that some required external behaviour is
- made available. See hardware.
-
-
- Standard
- -------------
- A term applied to many computer systems and their components. It
- is rather doubtful that this term actually means anything at all.
- It has been the subject of so much abuse by so many, for so long,
- that it has become almost meaningless. See ISA. In practise, it
- is possible to find some particular products or interfaces which
- are ubiquitous to the point of becoming a 'de facto' standard.
- In these cases the term may have some use, providing it indicates
- demonstrable compatibility with some readily obtained reference.
-
-
- Synchronisation
- -------------
- The state in which one electronic system is operated as though it
- was actually receiving clocking information from another separate
- system. This apparent synchronism between the respective clocks,
- gives rise to the term synchronisation when describing the state.
- It is vitally important that a display unit operate with absolute
- synchronisation to the image generator from which it receives the
- input video signals.
-
-
- TTL
- -------------
- Transistor Transistor Logic, a logic family which gives rise to a
- characteristic interface for digital signals known as TTL. These
- signals have certain well specified characteristics, so can be of
- use in transmission of digital information between systems. Some
- display units accept digital data using TTL compatible signals.
-
-
- Tube
- -------------
- The common term for a display tube or CRT. See CRT.
-
-
- VGA
- -------------
- Video Graphics Array. This is the most important video graphics
- standard at the time of writing. Inexpensive to produce this is
- becoming numerically the most common display generation scheme.
- It is capable of simple extension, but supports a common set of
- facilities. It is particularly interesting for support given to
- emulation of other graphics standards. It is more than adequate
- for almost all applications except the most demanding.
-
-
- VGA Controller
- -------------
- This is a highly integrated electronic device which contains all
- the logic functions required to implement a VGA controller which
- is the image generator for producing VGA video information ready
- for display.
-
-
- Video
- -------------
- An electronic signal carrying picture information into a display
- unit. This information is in a form suitable for translation by
- a display unit into an image readily comprehensible to the eye.
-
-
-
-
- Index
- ===============================================================================
-
-
- There are extensive cross references provided for all the VGA hardware register
- descriptions, and these cross references do not rely on any concepts of page or
- line numbers. This is done with a purpose. Many different page sizes can be
- produced by current printing equipment, so it is suggested that the user employ
- a readily available indexing program if a conventional index is really needed.
-
- This will of course, depend entirely upon the page format selected by the user
- in printing the document. Guidelines for obtaining a print are available.
-
- See {0.06} Obtaining a print of this document.
-
- The contents list gives a useful overview of the chapter and section contents,
- which, when used with the extensive cross references provides for an entirely
- practical navigation aid around the text. For this reason it is not envisaged
- that any users will find the need to produce a conventional index.
-
- There are two indexes included below. The first is concerned with a complete
- list of all the functional register groups available to the VGA programmer.
- The second expands on the first, by including each of the bit fields present
- in each register. The format in both cases is the same as that for the entry
- proper, in the main body of the text. Details of input output port addresses
- are therefore included, with register index values if needed, and read, write
- or index functionality as appropriate.
-
-
-
-
- Complete Register Listing By Functional Grouping
- ------------------------------------------------
-
-
-
-
- Sequencer Registers
- ------------------------------------------------------------------------------
-
- 6.04.01 Sequencer Address Register { 3c4h --- R/W }
-
- 6.04.02 Reset Register { 3c5h 00h R/W }
-
- 6.04.03 Clocking Mode Register { 3c5h 01h R/W }
-
- 6.04.04 Map Mask Register { 3c5h 02h R/W }
-
- 6.04.05 Character Map Select Register { 3c5h 03h R/W }
-
- 6.04.06 Sequencer Memory Mode Register { 3c5h 04h R/W }
-
- 6.04.07 ................................{ 3c5h 07h R/W }
- 6.04.07 Horizontal Character Counter Reset Register...........
-
- ------------------------------------------------------------------------------
-
-
-
-
- CRT Controller Registers
- ------------------------------------------------------------------------------
-
- 6.05.01 CRT Controller Address Register { 3?4h --- R/W }
-
- 6.05.02 Horizontal Total Register { 3?5h 00h R/W }
-
- 6.05.03 Horizontal Display Enable End Register { 3?5h 01h R/W }
-
- 6.05.04 Start Horizontal Blanking Register { 3?5h 02h R/W }
-
- 6.05.05 End Horizontal Blanking Register { 3?5h 03h R/W }
-
- 6.05.06 Start Horizontal Retrace Pulse Register { 3?5h 04h R/W }
-
- 6.05.07 End Horizontal Retrace Register { 3?5h 05h R/W }
-
- 6.05.08 Vertical Total Register { 3?5h 06h R/W }
-
- 6.05.09 CRT Controller Overflow Register { 3?5h 07h R/W }
-
- 6.05.10 Preset Row Scan Register { 3?5h 08h R/W }
-
- 6.05.11 Maximum Scan Line Register { 3?5h 09h R/W }
-
- 6.05.12 Cursor Start Register { 3?5h 0ah R/W }
-
- 6.05.13 Cursor End Register { 3?5h 0bh R/W }
-
- 6.05.14 Start Address High Register { 3?5h 0ch R/W }
-
- 6.05.15 Start Address Low Register { 3?5h 0dh R/W }
-
- 6.05.16 Cursor Location High Register { 3?5h 0eh R/W }
-
- 6.05.17 Cursor Location Low Register { 3?5h 0fh R/W }
-
- 6.05.18 Vertical Retrace Start Register { 3?5h 10h R/W }
-
- 6.05.19 Vertical Retrace End Register { 3?5h 11h R/W }
-
- 6.05.20 Vertical Display Enable End Register { 3?5h 12h R/W }
-
- 6.05.21 Offset Register { 3?5h 13h R/W }
-
- 6.05.22 Underline Location Register { 3?5h 14h R/W }
-
- 6.05.23 Start Vertical Blanking Register { 3?5h 15h R/W }
-
- 6.05.24 End Vertical Blanking Register { 3?5h 16h R/W }
-
- 6.05.25 CRTC Mode Control Register { 3?5h 17h R/W }
-
- 6.05.26 Line Compare Register { 3?5h 18h R/W }
-
- ------------------------------------------------------------------------------
-
-
-
-
- Graphics Controller Registers
- ------------------------------------------------------------------------------
-
- 6.06.01 Graphics Address Register { 3ceh --- R/W }
-
- 6.06.02 Set/Reset Register { 3cfh 00h R/W }
-
- 6.06.03 Enable Set/Reset Register { 3cfh 01h R/W }
-
- 6.06.04 Colour Compare Register { 3cfh 02h R/W }
-
- 6.06.05 Data Rotate Register { 3cfh 03h R/W }
-
- 6.06.06 Read Map Select Register { 3cfh 04h R/W }
-
- 6.06.07 Graphics Mode Register { 3cfh 05h R/W }
-
- 6.06.08 Miscellaneous Register { 3cfh 06h R/W }
-
- 6.06.09 Colour Don't Care Register { 3cfh 07h R/W }
-
- 6.06.10 Bit Mask Register { 3cfh 08h R/W }
-
- ------------------------------------------------------------------------------
-
-
-
-
- Attribute Controller Registers
- ------------------------------------------------------------------------------
-
- 6.07.01 Attribute Address Register { 3c0h/I/W 3c0h/R --- R/W }
-
- 6.07.02 Palette Register 00 { 3c0h/I/W 3c1h/R 00h R/W }
-
- 6.07.03 Palette Register 01 { 3c0h/I/W 3c1h/R 01h R/W }
-
- 6.07.04 Palette Register 02 { 3c0h/I/W 3c1h/R 02h R/W }
-
- 6.07.05 Palette Register 03 { 3c0h/I/W 3c1h/R 03h R/W }
-
- 6.07.06 Palette Register 04 { 3c0h/I/W 3c1h/R 04h R/W }
-
- 6.07.07 Palette Register 05 { 3c0h/I/W 3c1h/R 05h R/W }
-
- 6.07.08 Palette Register 06 { 3c0h/I/W 3c1h/R 06h R/W }
-
- 6.07.09 Palette Register 07 { 3c0h/I/W 3c1h/R 07h R/W }
-
- 6.07.10 Palette Register 08 { 3c0h/I/W 3c1h/R 08h R/W }
-
- 6.07.11 Palette Register 09 { 3c0h/I/W 3c1h/R 09h R/W }
-
- 6.07.12 Palette Register 10 { 3c0h/I/W 3c1h/R 0ah R/W }
-
- 6.07.13 Palette Register 11 { 3c0h/I/W 3c1h/R 0bh R/W }
-
- 6.07.14 Palette Register 12 { 3c0h/I/W 3c1h/R 0ch R/W }
-
- 6.07.15 Palette Register 13 { 3c0h/I/W 3c1h/R 0dh R/W }
-
- 6.07.16 Palette Register 14 { 3c0h/I/W 3c1h/R 0eh R/W }
-
- 6.07.17 Palette Register 15 { 3c0h/I/W 3c1h/R 0fh R/W }
-
- 6.07.18 Attribute Mode Control Register { 3c0h/I/W 3c1h/R 10h R/W }
-
- 6.07.19 Overscan Colour Register { 3c0h/I/W 3c1h/R 11h R/W }
-
- 6.07.20 Colour Plane Enable Register { 3c0h/I/W 3c1h/R 12h R/W }
-
- 6.07.21 Horizontal PEL Panning Register { 3c0h/I/W 3c1h/R 13h R/W }
-
- 6.07.22 Colour Select Register { 3c0h/I/W 3c1h/R 14h R/W }
-
- ------------------------------------------------------------------------------
-
-
-
-
- DAC Registers
- ------------------------------------------------------------------------------
-
- 6.08.01 DAC Pixel Mask Register { 3c6h R/W }
-
- 6.08.02 DAC Status Register { 3c7h R-- }
-
- 6.08.03 DAC Read Data Address Register { 3c7h W-- }
-
- 6.08.04 DAC Write Data Address Register { 3c8h R/W }
-
- 6.08.05 DAC Data Register { 3c9h R/W }
-
- ------------------------------------------------------------------------------
-
-
-
-
- General Registers
- ------------------------------------------------------------------------------
-
- 6.09.01 Miscellaneous Output Register { 3c2h W-- }
-
- 6.09.02 Miscellaneous Output Register { 3cch --R }
-
- 6.09.03 Input Status Register Zero { 3c2h R-- }
-
- 6.09.04 Input Status Register One { 3?ah R-- }
-
- ------------------------------------------------------------------------------
-
-
-
-
- Special Registers
- ------------------------------------------------------------------------------
-
- 6.10.01 Hardware Version Register {new definition} { 3c5h 0bh R-- }
-
- 6.10.02 Version Selector Register {old definition} { 3c5h 0bh --W }
-
- 6.10.03 Configuration Port Register 1 { 3c5h 0ch R/W }
-
- 6.10.04 Mode Control Register 2 { 3c5h 0dh R/W }
-
- 6.10.05 Mode Control Register 1 { 3c5h 0eh R/W }
-
- 6.10.06 Power-up Mode Register 2 { 3c5h 0fh R/W }
-
- 6.10.07 CRTC Module Testing Register { 3?5h 1eh R/W }
-
- 6.10.08 Software Programming Register { 3?5h 1fh R/W }
-
- 6.10.09 CPU Latch Read Back Register { 3?5h 22h R-- }
-
- 6.10.10 Attribute State Read Back Register { 3?5h 24h R-- }
-
- 6.10.11 Attribute Index Read Back Register { 3?5h 26h R-- }
-
- 6.10.12 Clear Vertical Display Enable Register { 3?5h 3nh W-- }
-
- 6.10.13 Source Address Register { 3cfh 0eh R/W }
-
- 6.10.14 Source Address Enable Register { 3cfh 0fh R/W }
-
- ------------------------------------------------------------------------------
-
-
-
-
- Complete Register Listing Including Bit Fields
- ----------------------------------------------
-
-
-
-
- Sequencer Registers
- ------------------------------------------------------------------------------
-
-
- 6.04.01 Sequencer Address Register { 3c4h --- R/W }
- ------------------------------------------------------
- <3..0> Sequencer Register Address
- <7..4> Reserved. Always <=0000>.
- ------------------------------------------------------
-
-
- 6.04.02 Reset Register { 3c5h 00h R/W }
- ------------------------------------------------------
- <0> Fast Reset Command
- <1> Safe Reset Command
- <7..2> Reserved. Always <=000000>.
- ------------------------------------------------------
-
-
- 6.04.03 Clocking Mode Register { 3c5h 01h R/W }
- ------------------------------------------------------
- <0> Character Dot Clock Select
- <1> Reserved. Always <=0>.
- <2> Shift Load Two Control
- <3> Dot Clock Divide by Two Enable
- <4> Shift Load Four Control
- <5> Screen Inhibit
- <7..6> Reserved. Always <=00>.
- ------------------------------------------------------
-
-
- 6.04.04 Map Mask Register { 3c5h 02h R/W }
- ------------------------------------------------------
- <0> Map Plane 0 Write Enable Control
- <1> Map Plane 1 Write Enable Control
- <2> Map Plane 2 Write Enable Control
- <3> Map Plane 3 Write Enable Control
- <7..4> Reserved. Always <=0000>.
- ------------------------------------------------------
-
-
- 6.04.05 Character Map Select Register { 3c5h 03h R/W }
- ------------------------------------------------------
- <0> Character Font Memory Map 'B' Partial Offset 16K byte
- <1> Character Font Memory Map 'B' Partial Offset 32K byte
- <2> Character Font Memory Map 'A' Partial Offset 16K byte
- <3> Character Font Memory Map 'A' Partial Offset 32K byte
- <4> Character Font Memory Map 'B' Partial Offset 08K byte
- <5> Character Font Memory Map 'A' Partial Offset 08K byte
- <7..6> Reserved. Always <=00>.
- ------------------------------------------------------
-
-
- 6.04.06 Sequencer Memory Mode Register { 3c5h 04h R/W }
- ------------------------------------------------------
- <0> Reserved. Always <=0>.
- <1> Memory Size Specification
- <2> Processor Image Memory Access Mode Select
- <3> Processor Image Memory Access Mapping Select
- <7..4> Reserved. Always <=0000>.
- ------------------------------------------------------
-
-
- 6.04.07 Horizontal Character Counter Reset Register...........
- 6.04.07 ................................{ 3c5h 07h R/W }
- ------------------------------------------------------
- <7..0> Horizontal Character Counter Reset
- ------------------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- CRT Controller Registers
- ------------------------------------------------------------------------------
-
-
- 6.05.01 CRT Controller Address Register { 3?4h --- R/W }
- ---------------------------------------------------------------
- <5..0> CRT Controller Register Address
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.05.02 Horizontal Total Register { 3?5h 00h R/W }
- ---------------------------------------------------------------
- <7..0> Horizontal Total
- ---------------------------------------------------------------
-
-
- 6.05.03 Horizontal Display Enable End Register { 3?5h 01h R/W }
- ---------------------------------------------------------------
- <7..0> Horizontal Display Enable
- ---------------------------------------------------------------
-
-
- 6.05.04 Start Horizontal Blanking Register { 3?5h 02h R/W }
- ---------------------------------------------------------------
- <7..0> Start Horizontal Blanking
- ---------------------------------------------------------------
-
-
- 6.05.05 End Horizontal Blanking Register { 3?5h 03h R/W }
- ---------------------------------------------------------------
- <4..0> End Horizontal Blanking
- <6..5> Display Enable Skew
- <7> Light Pen Register Enable
- ---------------------------------------------------------------
-
-
- 6.05.06 Start Horizontal Retrace Pulse Register { 3?5h 04h R/W }
- ---------------------------------------------------------------
- <7..0> Start Horizontal Retrace Pulse
- ---------------------------------------------------------------
-
-
- 6.05.07 End Horizontal Retrace Register { 3?5h 05h R/W }
- ---------------------------------------------------------------
- <4..0> End Horizontal Retrace
- <6..5> Horizontal Retrace Skew
- <7> End Horizontal Blanking Bit 5
- ---------------------------------------------------------------
-
-
- 6.05.08 Vertical Total Register { 3?5h 06h R/W }
- ---------------------------------------------------------------
- <7..0> Vertical Total
- ---------------------------------------------------------------
-
-
- 6.05.09 CRT Controller Overflow Register { 3?5h 07h R/W }
- ---------------------------------------------------------------
- <0> Vertical Total Bit 8
- <1> Vertical Display Enable End Bit 8
- <2> Vertical Retrace Start Bit 8
- <3> Start Vertical Blank Bit 8
- <4> Line Compare Bit 8
- <5> Vertical Total Bit 9
- <6> Vertical Display Enable End Bit 9
- <7> Vertical Retrace Start Bit 9
- ---------------------------------------------------------------
-
-
- 6.05.10 Preset Row Scan Register { 3?5h 08h R/W }
- ---------------------------------------------------------------
- <4..0> Preset Row Scan
- <6..5> Byte Panning Control
- <7> Reserved. Always <=0>.
- ---------------------------------------------------------------
-
-
- 6.05.11 Maximum Scan Line Register { 3?5h 09h R/W }
- ---------------------------------------------------------------
- <4..0> Maximum Scan Lines
- <5> Start Vertical Blank Bit 9
- <6> Line Compare Bit 9
- <7> Double Scan Line Display
- ---------------------------------------------------------------
-
-
- 6.05.12 Cursor Start Register { 3?5h 0ah R/W }
- ---------------------------------------------------------------
- <4..0> Cursor Row Scan Start
- <5> Cursor Enable
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.05.13 Cursor End Register { 3?5h 0bh R/W }
- ---------------------------------------------------------------
- <4..0> Cursor Row Scan End
- <6..5> Cursor Skew Control
- <7> Reserved. Always <=0>.
- ---------------------------------------------------------------
-
-
- 6.05.14 Start Address High Register { 3?5h 0ch R/W }
- ---------------------------------------------------------------
- <7..0> Start Address High
- ---------------------------------------------------------------
-
-
- 6.05.15 Start Address Low Register { 3?5h 0dh R/W }
- ---------------------------------------------------------------
- <7..0> Start Address Low
- ---------------------------------------------------------------
-
-
- 6.05.16 Cursor Location High Register { 3?5h 0eh R/W }
- ---------------------------------------------------------------
- <7..0> Cursor Location High
- ---------------------------------------------------------------
-
-
- 6.05.17 Cursor Location Low Register { 3?5h 0fh R/W }
- ---------------------------------------------------------------
- <7..0> Cursor Location Low
- ---------------------------------------------------------------
-
-
- 6.05.18 Vertical Retrace Start Register { 3?5h 10h R/W }
- ---------------------------------------------------------------
- <7..0> Vertical Retrace Start
- ---------------------------------------------------------------
-
-
- 6.05.19 Vertical Retrace End Register { 3?5h 11h R/W }
- ---------------------------------------------------------------
- <3..0> Vertical Retrace End
- <4> Clear Vertical Interrupt
- <5> Enable Vertical Interrupt
- <6> Refresh Bandwidth Select
- <7> CRTC Register Protect
- ---------------------------------------------------------------
-
-
- 6.05.20 Vertical Display Enable End Register { 3?5h 12h R/W }
- ---------------------------------------------------------------
- <7..0> Vertical Display Enable End
- ---------------------------------------------------------------
-
-
- 6.05.21 Offset Register { 3?5h 13h R/W }
- ---------------------------------------------------------------
- <7..0> Display Image Offset
- ---------------------------------------------------------------
-
-
- 6.05.22 Underline Location Register { 3?5h 14h R/W }
- ---------------------------------------------------------------
- <4..0> Underline Location
- <5> Display Address Dwell Count 4
- <6> Display Memory Address Unit 4
- <7> Reserved. Always <=0>.
- ---------------------------------------------------------------
-
-
- 6.05.23 Start Vertical Blanking Register { 3?5h 15h R/W }
- ---------------------------------------------------------------
- <7..0> Start Vertical Blanking
- ---------------------------------------------------------------
-
-
- 6.05.24 End Vertical Blanking Register { 3?5h 16h R/W }
- ---------------------------------------------------------------
- <7..0> End Vertical Blanking
- ---------------------------------------------------------------
-
-
- 6.05.25 CRTC Mode Control Register { 3?5h 17h R/W }
- ---------------------------------------------------------------
- <0> Display Address 13 Remap Row 0
- <1> Display Address 14 Remap Row 1
- <2> Horizontal Retrace Divisor
- <3> Display Address Dwell Count 2
- <4> Reserved. Always <=0>.
- <5> Display Address Unit 2 Remap
- <6> Display Memory Address Unit 2
- <7> Horizontal/Vertical Retrace Reset
- ---------------------------------------------------------------
-
-
- 6.05.26 Line Compare Register { 3?5h 18h R/W }
- ---------------------------------------------------------------
- <7..0> Line Compare
- ---------------------------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- Graphics Controller Registers
- ------------------------------------------------------------------------------
-
-
- 6.06.01 Graphics Address Register { 3ceh --- R/W }
- ---------------------------------------------------
- <3..0> Graphics Register Address
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.02 Set/Reset Register { 3cfh 00h R/W }
- ---------------------------------------------------
- <0> Set/Reset Data Image Plane 0
- <1> Set/Reset Data Image Plane 1
- <2> Set/Reset Data Image Plane 2
- <3> Set/Reset Data Image Plane 3
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.03 Enable Set/Reset Register { 3cfh 01h R/W }
- ---------------------------------------------------
- <0> Set/Reset Enable Image Plane 0
- <1> Set/Reset Enable Image Plane 1
- <2> Set/Reset Enable Image Plane 2
- <3> Set/Reset Enable Image Plane 3
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.04 Colour Compare Register { 3cfh 02h R/W }
- ---------------------------------------------------
- <0> Colour Compare Plane 0
- <1> Colour Compare Plane 1
- <2> Colour Compare Plane 2
- <3> Colour Compare Plane 3
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.05 Data Rotate Register { 3cfh 03h R/W }
- ---------------------------------------------------
- <2..0> Data Rotate
- <4..3> Logic Unit Function Code
- <7..5> Reserved. Always <=000>.
- ---------------------------------------------------
-
-
- 6.06.06 Read Map Select Register { 3cfh 04h R/W }
- ---------------------------------------------------
- <1..0> Read Map Select
- <7..2> Reserved. Always <=000000>.
- ---------------------------------------------------
-
-
- 6.06.07 Graphics Mode Register { 3cfh 05h R/W }
- ---------------------------------------------------
- <1..0> Processor Write Mode
- <2> Reserved. Always <=0>.
- <3> Processor Read Mode
- <4> Graphics Memory Access Mode
- <5> Graphics Shift Register Mode
- <6> Graphics 256 Colour Control
- <7> Reserved. Always <=0>.
- ---------------------------------------------------
-
-
- 6.06.08 Miscellaneous Register { 3cfh 06h R/W }
- ---------------------------------------------------
- <0> Display Generation Mode
- <1> Memory Plane Pairing Control
- <3..2> Memory Map Mode
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.09 Colour Don't Care Register { 3cfh 07h R/W }
- ---------------------------------------------------
- <0> Colour Don't Care Plane 0
- <1> Colour Don't Care Plane 1
- <2> Colour Don't Care Plane 2
- <3> Colour Don't Care Plane 3
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------
-
-
- 6.06.10 Bit Mask Register { 3cfh 08h R/W }
- ---------------------------------------------------
- <0> Update Value Source Bit 0
- <1> Update Value Source Bit 1
- <2> Update Value Source Bit 2
- <3> Update Value Source Bit 3
- <4> Update Value Source Bit 4
- <5> Update Value Source Bit 5
- <6> Update Value Source Bit 6
- <7> Update Value Source Bit 7
- ---------------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- Attribute Controller Registers
- ------------------------------------------------------------------------------
-
-
- 6.07.01 Attribute Address Register { 3c0h/I/W 3c0h/R --- R/W }
- ---------------------------------------------------------------
- <4..0> Attribute Address
- <5> Palette Control
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.02 Palette Register 00 { 3c0h/I/W 3c1h/R 00h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.03 Palette Register 01 { 3c0h/I/W 3c1h/R 01h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.04 Palette Register 02 { 3c0h/I/W 3c1h/R 02h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.05 Palette Register 03 { 3c0h/I/W 3c1h/R 03h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.06 Palette Register 04 { 3c0h/I/W 3c1h/R 04h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.07 Palette Register 05 { 3c0h/I/W 3c1h/R 05h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.08 Palette Register 06 { 3c0h/I/W 3c1h/R 06h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.09 Palette Register 07 { 3c0h/I/W 3c1h/R 07h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.10 Palette Register 08 { 3c0h/I/W 3c1h/R 08h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.11 Palette Register 09 { 3c0h/I/W 3c1h/R 09h R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.12 Palette Register 10 { 3c0h/I/W 3c1h/R 0ah R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.13 Palette Register 11 { 3c0h/I/W 3c1h/R 0bh R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.14 Palette Register 12 { 3c0h/I/W 3c1h/R 0ch R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.15 Palette Register 13 { 3c0h/I/W 3c1h/R 0dh R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.16 Palette Register 14 { 3c0h/I/W 3c1h/R 0eh R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.17 Palette Register 15 { 3c0h/I/W 3c1h/R 0fh R/W }
- ---------------------------------------------------------------
- <5..0> Colour Value
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.18 Attribute Mode Control Register { 3c0h/I/W 3c1h/R 10h R/W }
- ---------------------------------------------------------------
- <0> Display Generation Mode
- <1> Display Generation Mode
- <2> Line Graphics Character Code Control
- <3> Text Mode Attribute Select
- <4> Reserved. Always <=0>.
- <5> Split Screen Panning Control
- <6> Shift Register 256 Colour Assembly Latch
- <7> External Colour Palette Input Select
- ---------------------------------------------------------------
-
-
- 6.07.19 Overscan Colour Register { 3c0h/I/W 3c1h/R 11h R/W }
- ---------------------------------------------------------------
- <7..0> Overscan Colour
- ---------------------------------------------------------------
-
-
- 6.07.20 Colour Plane Enable Register { 3c0h/I/W 3c1h/R 12h R/W }
- ---------------------------------------------------------------
- <0> Colour Plane Enable 0
- <1> Colour Plane Enable 1
- <2> Colour Plane Enable 2
- <3> Colour Plane Enable 3
- <5..4> Display Status Select
- <7..6> Reserved. Always <=00>.
- ---------------------------------------------------------------
-
-
- 6.07.21 Horizontal PEL Panning Register { 3c0h/I/W 3c1h/R 13h R/W }
- ---------------------------------------------------------------
- <3..0> Horizontal PEL Panning
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------------------
-
-
- 6.07.22 Colour Select Register { 3c0h/I/W 3c1h/R 14h R/W }
- ---------------------------------------------------------------
- <1..0> External colour palette bits <5..4>
- <3..2> External colour palette bits <7..6>
- <7..4> Reserved. Always <=0000>.
- ---------------------------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- DAC Registers
- ------------------------------------------------------------------------------
-
-
- 6.08.01 DAC Pixel Mask Register { 3c6h R/W }
- -----------------------------------------------
- <0> DAC Pixel Mask 0 {Digital to Analogue Converter Pixel Mask}
- <1> DAC Pixel Mask 1 {Digital to Analogue Converter Pixel Mask}
- <2> DAC Pixel Mask 2 {Digital to Analogue Converter Pixel Mask}
- <3> DAC Pixel Mask 3 {Digital to Analogue Converter Pixel Mask}
- <4> DAC Pixel Mask 4 {Digital to Analogue Converter Pixel Mask}
- <5> DAC Pixel Mask 5 {Digital to Analogue Converter Pixel Mask}
- <6> DAC Pixel Mask 6 {Digital to Analogue Converter Pixel Mask}
- <7> DAC Pixel Mask 7 {Digital to Analogue Converter Pixel Mask}
- -----------------------------------------------
-
-
- 6.08.02 DAC Status Register { 3c7h R-- }
- -----------------------------------------------
- <1..0> DAC Status
- <7..2> Reserved. Always <=000000>.
- -----------------------------------------------
-
-
- 6.08.03 DAC Read Data Address Register { 3c7h W-- }
- -----------------------------------------------
- <7..0> DAC Read Data Address
- -----------------------------------------------
-
-
- 6.08.04 DAC Write Data Address Register { 3c8h R/W }
- -----------------------------------------------
- <7..0> DAC Write Data Address
- -----------------------------------------------
-
-
- 6.08.05 DAC Data Register { 3c9h R/W }
- -----------------------------------------------
- <7..0> DAC Data
- -----------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- General Registers
- ------------------------------------------------------------------------------
-
-
- 6.09.01 Miscellaneous Output Register { 3c2h W-- }
- --------------------------------------------
- <0> Input Output Address Select
- <1> Display Memory Access Enable
- <3..2> Dot Clock Frequency Select
- <4> Reserved. Always <=0>.
- <5> Address Extension Bit
- <6> Horizontal Synchronisation Signal Polarity
- <7> Vertical Synchronisation Signal Polarity
- --------------------------------------------
-
-
- 6.09.02 Miscellaneous Output Register { 3cch --R }
- --------------------------------------------
- <7..0> Miscellaneous Output
- --------------------------------------------
-
-
- 6.09.03 Input Status Register Zero { 3c2h R-- }
- --------------------------------------------
- <3..0> Reserved. Always <=0000>.
- <4> Monitor Detect Status Bit
- <6..5> Reserved. Always <=00>.
- <7> CRT Controller Interrupt State
- --------------------------------------------
-
-
- 6.09.04 Input Status Register One { 3?ah R-- }
- --------------------------------------------
- <0> Inverted Display Enable Status
- <1> Reserved. Always <=0>.
- <2> Reserved. Always <=0>. {Trident 8900 <=1>.}
- <3> Vertical Retrace State
- <5..4> Video Sampling State
- <7..6> Reserved. Always <=00>.
- --------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- Special Registers
- ------------------------------------------------------------------------------
-
-
- 6.10.01 Hardware Version Register {new definition} { 3c5h 0bh R-- }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <3..0> Chip version identification {Trident}
- <7..4> Reserved.
- ------------------------------------------------------------------
-
-
- 6.10.02 Version Selector Register {old definition} { 3c5h 0bh --W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- see main text body for details
- ------------------------------------------------------------------
-
-
- 6.10.03 Configuration Port Register 1 { 3c5h 0ch R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- Definition {only when NMI disabled}
- ------------------------------------------------------------------
- <0> Address Decode Source
- <1> ROM Chip Count Specify
- <2> Reserved.
- <3> ROM Address Span Specify
- <4> VGA Control Port Specify
- <6..5> DRAM Configuration
- <7> DRAM Access Width
- ------------------------------------------------------------------
- Definition {only when NMI enabled}
- ------------------------------------------------------------------
- <0> Software Status
- <1> NMI State {Non Maskable Interrupt State}
- <3..2> Testing Bits
- <7..4> NMI Vector Enable
- ------------------------------------------------------------------
-
-
- 6.10.04 Mode Control Register 2 { 3c5h 0dh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- New Definition
- ------------------------------------------------------------------
- <0> Dot Clock Extended Select
- <2..1> Dot Clock Division Ratio Select
- <3> Software Status
- <5..4> Software Status
- <7..6> General Purpose Outputs
- ------------------------------------------------------------------
- Old Definition
- ------------------------------------------------------------------
- <2..0> Video Generation Mode Select
- <3> Processor Bandwidth during Blanking
- <4> Memory Plane Architecture Select
- <5> DRAM Clock Control
- <7..6> Character Set Select High Extend
- ------------------------------------------------------------------
-
-
- 6.10.05 Mode Control Register 1 { 3c5h 0eh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- New Definition
- ------------------------------------------------------------------
- <0> Segment Selector
- <1> Page Selector
- <3..2> Bank Selector
- <6..4> Software Status
- <7> Write Protection State
- ------------------------------------------------------------------
- Old Definition
- ------------------------------------------------------------------
- <0> Display Access Bank Selector
- <2..1> Processor Access Bank Selector
- <3> DRAM Access Width
- <4> Reserved for Dot Clock Extended Select
- <5> NMI State {Non Maskable Interrupt State}
- <6> Interrupt Request Polarity Select
- <7> Clock Pins Function Select
- ------------------------------------------------------------------
-
-
- 6.10.06 Power-up Mode Register 2 { 3c5h 0fh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <3..0> DIP Switch Image
- <4> Bus Protocol Select
- <5> Input Output Address Map Select
- <6> ROM BIOS Address Decode Enable
- <7> ROM BIOS Data Path Width
- ------------------------------------------------------------------
-
-
- 6.10.07 CRTC Module Testing Register { 3?5h 1eh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <0> Horizontal Clock Select
- <1> Character Clock Select
- <2> Interlace Enable
- <3> Multipurpose Select
- <4> CRT Controller Register Protection State
- <5> Start Address Extension Bit 16
- <6> Miscellaneous Output Register Protect State
- <7> Start Address Extension Enable
- ------------------------------------------------------------------
-
-
- 6.10.08 Software Programming Register { 3?5h 1fh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <1..0> Reserved for BIOS use.
- <3..2> Software Status Bits
- <7..4> Reserved for BIOS use. Do NOT disturb.
- ------------------------------------------------------------------
-
-
- 6.10.09 CPU Latch Read Back Register { 3?5h 22h R-- }
- ---------------------------------------------------------------------------
- standard register officially undocumented
- ------------------------------------------------------------------
- <7..0> CPU Latch Read Back
- ------------------------------------------------------------------
-
-
- 6.10.10 Attribute State Read Back Register { 3?5h 24h R-- }
- ---------------------------------------------------------------------------
- standard register officially undocumented
- ------------------------------------------------------------------
- <4..0> Attribute Controller Index
- <5> Colour Palette Address Source {Internal palette}
- <6> Reserved.
- <7> Attribute State Read Back
- ------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <6..0> Reserved. Undefined.
- <7> Attribute State Read Back
- ------------------------------------------------------------------
-
-
- 6.10.11 Attribute Index Read Back Register { 3?5h 26h R-- }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <4..0> Attribute Index
- <7..5> Reserved.
- ------------------------------------------------------------------
-
-
- 6.10.12 Clear Vertical Display Enable Register { 3?5h 3nh W-- }
- ---------------------------------------------------------------------------
- standard register officially undocumented
- ------------------------------------------------------------------
- <0> Clear Vertical Display Enable
- <7..1> Unused. Any value can be present.
- ------------------------------------------------------------------
-
-
- 6.10.13 Source Address Register { 3cfh 0eh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- see main text body for details
- ------------------------------------------------------------------
-
-
- 6.10.14 Source Address Enable Register { 3cfh 0fh R/W }
- ---------------------------------------------------------------------------
- Trident 8900 only
- ------------------------------------------------------------------
- <0> Source Address Enable
- <7..1> Reserved. Always <=0000000>.
- ------------------------------------------------------------------
-
-
- ------------------------------------------------------------------------------
-
-
-
-
- Thank you for using this reference work. If you have any useful comments which
- others would benefit from, please do take a little of your valuable time to let
- me know your thoughts. Only by so doing will this work improve over time. The
- author really wants to hear!
-
-
- [End of file: vga.doc]
-
-